On 2015/4/14 11:40, Al Viro wrote: > On Tue, Apr 14, 2015 at 11:06:40AM +0800, Joseph Qi wrote: >> Hi Viro, >> I have questions about your commit cf1b5ea1c5cd >> ("[regression] ocfs2: do *not* increment ->ki_pos twice"). >> Yes, ->ki_pos is increased in generic_file_direct_write(). But >> *ppos doesn't. So I increase it here for further use in >> generic_perform_write. >> After this, ->ki_pos and *ppos are equal. > > They are equal all along, for a very simple reason: ppos *points* *to* > iocb->ki_pos. So yes, you do increase it twice, once via one alias, > once via another. > > Check and you'll see - ppos is initialized with &iocb->ki_pos and never > reassigned. What happens is an equivalent of > > int x = 0; > int *p = &x; > > x += 10; > *p += 10; > > which obviously ends with x increased by 20, not by 10... > > I see. My mistake of ignoring this. Thanks very much for spotting it out.
_______________________________________________ Ocfs2-devel mailing list Ocfs2-devel@oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel