User: Password:
Subscribe / Log in / New account

cifs: implement proper hardlink handling (try #4)

From:  Jeff Layton <>
Subject:  [PATCH 00/13] cifs: implement proper hardlink handling (try #4)
Date:  Wed, 27 May 2009 08:30:21 -0400
Message-ID:  <>
Archive-link:  Article

This set is the fourth respin of a patchset to fix the hardlink
detection and handling in CIFS. The significant changes from the last
set are:

1) fixed a bug in readdir where if an entry had an error we'd cause
the entire readdir to fail. It now properly handles this I think.

2) account for changes due to the addition of create-during-lookup
functionality. Nothing really major here.

This patchset passes the connectathon test suite with posix extensions
enabled and disabled and with cifsacl enabled. It also survived several
hours running under the LTP fsstress program.

This is a good first step I think, but there's still work to be done.
One thing that this patchset doesn't account for is the situation where
the inode number of a particular path has unexpectedly changed. Fixing
that will mean changing the the current cifs_get_inode_info[_unix]
interfaces to something different. The current code however doesn't
handle this properly either and this set shouldn't make that any worse
than it already is. That's a sufficiently big enough project that I
think it warrants a separate patchset. Once this one is in place, I'll
start work on fixing that.

At this point, I think these patches are ready to go into 2.6.31 when it
opens. While I think this patchset is bisectable from the standpoint of
building, bisecting in the middle of the series may be problematic. YMMV
in particular if you bisect in such a way that the readdir and
non-readdir codepaths are using different ways of getting inodes.

It may be better to merge some of these patches before committing so
that that's not a problem, but the current way this is broken up should
make it a little easier to review.

I think we want to be very careful to make this bisectable if at all
possible. That means not committing these out of order as well.

Christoph Hellwig (2):
  cifs: reorganize get_cifs_acl
  cifs: clean up set_cifs_acl interfaces

Jeff Layton (11):
  cifs: have cifs_NTtimeToUnix take a little-endian arg
  cifs: make cnvrtDosUnixTm take a little-endian args and an offset
  cifs: rename cifs_iget to cifs_root_iget
  cifs: add new cifs_iget function and convert unix codepath to use it
  cifs: convert posix readdir codepath to use cifs_iget
  cifs: convert cifs_get_inode_info to use cifs_iget
  cifs: convert non-posix readdir codepath to use cifs_iget
  cifs: remove cifs_new_inode
  cifs: make serverino the default when mounting
  cifs: remove cifsInodeInfo->inUse counter
  cifs: remove "hardlink detection" from cifs_rename

 fs/cifs/cifsacl.c   |  200 +++++++------
 fs/cifs/cifsfs.c    |    3 +-
 fs/cifs/cifsfs.h    |   15 +-
 fs/cifs/cifsglob.h  |   28 ++-
 fs/cifs/cifsproto.h |   21 +-
 fs/cifs/cifssmb.c   |    4 +-
 fs/cifs/connect.c   |    2 +
 fs/cifs/dir.c       |   22 +-
 fs/cifs/file.c      |    2 +-
 fs/cifs/inode.c     |  802 +++++++++++++++++++++------------------------------
 fs/cifs/netmisc.c   |   24 +-
 fs/cifs/readdir.c   |  565 ++++++++++++------------------------
 12 files changed, 690 insertions(+), 998 deletions(-)

To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to
More majordomo info at

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds