Details
-
Bug
-
Resolution: Won't Fix
-
Minor
-
None
-
Lustre 2.1.0
-
None
-
RedHat 6.0
-
3
-
6416
Description
The following code as root doesn't raise "EDQUOT" error on Lustre even if the user "ME" exceeded its data quota:
#define SIZE 10240
#define ME 500
int main( int argc, char * argv[] )
{ char * buff = NULL ; int fd =0 ; buff = malloc( SIZE ) ; setfsuid( ME ) ; fd = open( argv[1], O_CREAT|O_RDWR, 0644 ) ; printf( "buff=%p, errno=%u\n", buff, errno ) ; printf( "fd = %d\n", fd ) ; printf( "bytes written = %d, errno=%u\n", write( fd, buff, SIZE), errno ); printf( "fsync:%d errno=%u\n", fsync( fd ), errno ) ; printf( "close:%d errno=%u\n", close( fd ), errno ) ; }Running it returns no error even if user 500 is out of data quota:
buff=0xee8010, errno=0
fd = 3
bytes written = 10240, errno=0
fsync:0 errno=0
close:0 errno=0
The issue is only for data quota. setfsuid() works fine for inode quota.