Re: [PATCH] CIFS: Fix mkdir/rmdir bug for the non-POSIX case

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

 



On 02/10/2012 11:52 PM, Jeff Layton wrote:
> On Thu,  9 Feb 2012 21:08:12 +0300
> Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote:
> 
>> Currently we do inc_nlink/drop_nlink for a parent directory for every
>> mkdir and rmdir calls. That's wrong when POSIX extensions are disabled
>> because in this case a server doesn't do the same things and returns
>> the old value on the next QueryInfo request. As the result, we update
>> our value with the server one and then decrement it on every rmdir
>> call - go to negative nlink values.
>>
>> Fix this by doing inc_nlink/drop_nlink for parent directory in mkdir
>> and rmdir in POSIX case only. Also add cERROR when nlink value <= 2
>> and we still try to decrement it (possible broken servers).
>>
> 
> Rather than doing that, I think it would be better not to do the
> inc/dec_nlink in either case and instead to set cifsi->time on the
> parent to 0 for both cases.
> 
> That should force it to have the directory attributes refetched at the
> next opportunity. Since we're not doing that now, we're likely missing
> out on stuff like directory mtime changes as well.
> 

Hmm.. don't we have to do both? Keep the nlink value sane and force
refetching attrs. Wondering if we don't update nlink what will happen in
cases

   (a) when mkdir/rmdir is run in a tight loop
   (b) when a dir is moved from one to another within the cifs mount


Thanks
Suresh
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux