Re: [PATCH v2 1/8] NFS: Add a helper to set attribute barriers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Feb 27, 2015 at 3:25 PM, Trond Myklebust
<trond.myklebust@xxxxxxxxxxxxxxx> wrote:
> On Fri, Feb 27, 2015 at 3:16 PM, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote:
>> A new failure occurred with Solaris 11 server, not with the other two.
>> I’ve never seen this one before. I will see if it’s reproducible.
>>
>> generic/207 1s ... [failed, exit status 1] - output mismatch (see /home/cel/src/xfstests/results//generic/207.out.bad)
>>     --- tests/generic/207.out   2014-02-13 15:40:45.204103195 -0500
>>     +++ /home/cel/src/xfstests/results//generic/207.out.bad     2015-02-27 11:55:47.943262225 -0500
>>     @@ -1,2 +1,2 @@
>>      QA output created by 207
>>     -4000 iterations of racing extensions and collection passed
>>     +write of 4096 bytes @16379904 finished, expected filesize at least 16384000, but got 16379904
>
> Huh. I'll look into this.

I suspect this is because we're performing the comparison against
inode->i_size outside the inode->i_lock spinlock in
nfs_writeback_check_extend(). That means that another earlier write
which also extends the file could in theory race, set a higher value
for the barrier, and "win".

In order to fix this, we want to perform the above test and then
update inode->i_size without dropping the spinlock.

-- 
Trond Myklebust
Linux NFS client maintainer, PrimaryData
trond.myklebust@xxxxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux