Dear Ashish, The ls uses st_size while du uses st_blocks. try using the ls -ls it will give you both the o/p's .
Thanks Manish On Fri, Aug 5, 2011 at 7:45 AM, Ashish Sangwan <ashishsangw...@gmail.com>wrote: > I write 1 program to create sparse file which contains alternate empty > blocks and data blocks. For example block1=empty, block2=data, block3=empty > ..... > > #define BLOCK_SIZE 4096 > void *buf; > int main(int argc, char **argv) > { > buf=malloc(512); > memset(buf,"a",512); > int fd=0; > int i; > int sector_per_block=BLOCK_SIZE/512; > int block_count=4; > if(argc !=2 ){ > printf("Wrong usage\n USAGE: program absolute_path_to_write\n"); > _exit(-1); > } > fd=open(argv[1],O_RDWR | O_CREAT,0666); > if(fd <= 0){ > printf("file open failed\n"); > _exit(0); > } > while(block_count > 0){ > lseek(fd,BLOCK_SIZE,SEEK_CUR); > block_count--; > for(i=0;i<sector_per_block;i++) > write(fd,buf,512); > block_count--; > } > close(fd); > return 0; > } > > Suppose, I create a new_sparse_file using this above code. > > When I run this program, on ext3 FS with block size 4KB, ls -lh shows size > of new_sparse_file as 16KB, while du -h shows 8 kb, which, I think is > correct. > > On xfs, block size of 4kb, ls -lh shows 16KB but du -h shows 12kb. > Why are there different kinds of behavior? > > If I increase the block_count to be written so that a 200MB file is > created, on XFS du -h shows 187MB and on EXT3 it shows 101MB. > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > >
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies