From: <Mik...@et...> - 2004-02-09 09:32:07
|
> In change_attributes, compiling for Linux 2.4, the line: > > if(S_ISREG(inode->i_mode) && i_size_read(inode) != attr->size) { > > is turned into this by the preprocessor: > > if((((inode->i_mode) & 00170000) == 0100000) && > ((inode)->i_size)) != attr->size) { > > The parenthesis are messed up due to the definition of i_size_read in > fuse_i.h having too many parenthesis. Yes sorry, I already fixed that (I compile on 2.6 usually and this just slipped in). > But I also noticed that my kernel (2.4.21 from SuSE 9 distribution) > contains an i_size_read in linux/include/fs.h, defined as: > > static inline loff_t i_size_read(struct inode * inode) Hmm.. so, some 2.4 kernels have the preemptible kernel patch. This means that checking whether i_size_read() can be used must be more subtle. > There is a long note in front of the i_size_read definition saying why > it is handled the way it is with a preemptable kernel.. So it looks > like fuse should use that on my system rather then directly reading > inode->i_size... Yep. I checked in a fixed one into CVS. Can you also check (in ${kernelsource}/include/linux/fs.h) that i_size_read/write is only special in case of CONFIG_PREEMPT? In 2.6 there is also special code in case of CONFIG_SMP. Thanks, Miklos -- At the end of this message, my employer might have automatically inserted a stupid disclaimer. This nonsense is out of my control and should simply be ignored. This communication is confidential and intended solely for the addressee(s). Any unauthorized review, use, disclosure or distribution is prohibited. If you believe this message has been sent to you in error, please notify the sender by replying to this transmission and delete the message without disclosing it. Thank you. E-mail including attachments is susceptible to data corruption, interruption, unauthorized amendment, tampering and viruses, and we only send and receive e-mails on the basis that we are not liable for any such corruption, interception, amendment, tampering or viruses or any consequences thereof. |