summaryrefslogtreecommitdiffstats
path: root/fs
Commit message (Collapse)AuthorAgeFilesLines
* switch ncpfsAl Viro2011-01-122-12/+5
| | | | | | merge dentry_operations for root and non-root Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch 9pAl Viro2011-01-124-10/+6
| | | | | | | | here we actually *want* ->d_op for root; setting it allows to get rid of kludge in v9fs_kill_super() since now we have proper ->d_release() for root and don't need to call it manually. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* pass default dentry_operations to mount_pseudo()Al Viro2011-01-124-14/+17
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch hostfsAl Viro2011-01-121-1/+1
| | | | | | ->d_delete() doesn't matter for s_root anyway Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch affsAl Viro2011-01-123-3/+7
| | | | | | either d_op instance would work for root, actually... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch configfsAl Viro2011-01-123-5/+3
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* take coda-private headers out of include/linuxAl Viro2011-01-1213-24/+198
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch codaAl Viro2011-01-122-3/+2
| | | | | | | Coda ->d_revalidate() actually checks for root, ->d_delete() is irrelevant. So we can use the same d_op for all coda dentries Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch hpfsAl Viro2011-01-124-9/+3
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch btrfs, close racesAl Viro2011-01-123-12/+3
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch ocfs2, close racesAl Viro2011-01-123-10/+2
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch gfs2, close racesAl Viro2011-01-123-14/+3
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch cifsAl Viro2011-01-125-41/+7
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch nfs to ->s_d_opAl Viro2011-01-123-10/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch adfsAl Viro2011-01-122-3/+2
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch hfsplusAl Viro2011-01-122-2/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch hfsAl Viro2011-01-122-4/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* minixfs: kill dead codeAl Viro2011-01-121-2/+0
| | | | | | ->d_op of root stays NULL these days on minixfs Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch sysvAl Viro2011-01-122-5/+4
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch fuseAl Viro2011-01-122-7/+4
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch jfs to ->s_d_op, close exportfs racesAl Viro2011-01-122-12/+4
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* switch fat to ->s_d_op, close exportfs races thereAl Viro2011-01-124-45/+25
| | | | | | | don't bother with lock_super() in fat_fill_super() callers, while we are at it - there won't be any concurrency anyway. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* fix isofs d_op handlingAl Viro2011-01-122-8/+7
| | | | | | switch to ->s_d_op; d_obtain_alias() will DTRT now Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* per-superblock default ->d_opAl Viro2011-01-121-0/+4
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* Merge branch 'nfs-for-2.6.38' of ↵Linus Torvalds2011-01-1139-3814/+7414
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.linux-nfs.org/projects/trondmy/nfs-2.6 * 'nfs-for-2.6.38' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (89 commits) NFS fix the setting of exchange id flag NFS: Don't use vm_map_ram() in readdir NFSv4: Ensure continued open and lockowner name uniqueness NFS: Move cl_delegations to the nfs_server struct NFS: Introduce nfs_detach_delegations() NFS: Move cl_state_owners and related fields to the nfs_server struct NFS: Allow walking nfs_client.cl_superblocks list outside client.c pnfs: layout roc code pnfs: update nfs4_callback_recallany to handle layouts pnfs: add CB_LAYOUTRECALL handling pnfs: CB_LAYOUTRECALL xdr code pnfs: change lo refcounting to atomic_t pnfs: check that partial LAYOUTGET return is ignored pnfs: add layout to client list before sending rpc pnfs: serialize LAYOUTGET(openstateid) pnfs: layoutget rpc code cleanup pnfs: change how lsegs are removed from layout list pnfs: change layout state seqlock to a spinlock pnfs: add prefix to struct pnfs_layout_hdr fields pnfs: add prefix to struct pnfs_layout_segment fields ...
| * NFS fix the setting of exchange id flagAndy Adamson2011-01-111-4/+21
| | | | | | | | | | | | | | | | | | | | | | Indicate support for referrals. Do not set any PNFS roles. Check the flags returned by the server for validity. Do not use exchange flags from an old client ID instance when recovering a client ID. Update the EXCHID4_FLAG_XXX set to RFC 5661. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * Merge branch 'bugfixes' into nfs-for-2.6.38Trond Myklebust2011-01-1022-117/+197
| |\ | | | | | | | | | | | | | | | | | | Conflicts: fs/nfs/nfs2xdr.c fs/nfs/nfs3xdr.c fs/nfs/nfs4xdr.c
| | * NFS: Don't use vm_map_ram() in readdirTrond Myklebust2011-01-104-41/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vm_map_ram() is not available on NOMMU platforms, and causes trouble on incoherrent architectures such as ARM when we access the page data through both the direct and the virtual mapping. The alternative is to use the direct mapping to access page data for the case when we are not crossing a page boundary, but to copy the data into a linear scratch buffer when we are accessing data that spans page boundaries. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Tested-by: Marc Kleine-Budde <mkl@pengutronix.de> Cc: stable@kernel.org [2.6.37]
| * | NFSv4: Ensure continued open and lockowner name uniquenessTrond Myklebust2011-01-062-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to enable migration support, we will want to move some of the structures that are subject to migration into the struct nfs_server. In particular, if we are to move the state_owner and state_owner_id to being a per-filesystem structure, then we should label the resulting open/lock owners with a per-filesytem label to ensure global uniqueness. This patch does so by adding the super block s_dev to the open/lock owner name. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS: Move cl_delegations to the nfs_server structChuck Lever2011-01-064-92/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Delegations are per-inode, not per-nfs_client. When a server file system is migrated, delegations on the client must be moved from the source to the destination nfs_server. Make it easier to manage a mount point's delegation list across a migration event by moving the list to the nfs_server struct. Clean up: I added documenting comments to public functions I changed in this patch. For consistency I added comments to all the other public functions in fs/nfs/delegation.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS: Introduce nfs_detach_delegations()Chuck Lever2011-01-061-21/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up: Refactor code that takes clp->cl_lock and calls nfs_detach_delegations_locked() into its own function. While we're changing the call sites, get rid of the second parameter and the logic in nfs_detach_delegations_locked() that uses it, since callers always set that parameter of nfs_detach_delegations_locked() to NULL. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS: Move cl_state_owners and related fields to the nfs_server structChuck Lever2011-01-062-72/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NFSv4 migration needs to reassociate state owners from the source to the destination nfs_server data structures. To make that easier, move the cl_state_owners field to the nfs_server struct. cl_openowner_id and cl_lockowner_id accompany this move, as they are used in conjunction with cl_state_owners. The cl_lock field in the parent nfs_client continues to protect all three of these fields. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS: Allow walking nfs_client.cl_superblocks list outside client.cChuck Lever2011-01-062-21/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're about to move some fields from struct nfs_client to struct nfs_server. There is a many-to-one relationship between nfs_servers and nfs_clients. After these fields are moved to the nfs_server struct, to visit all of the data in these fields that is owned by one nfs_client, code will need to visit each nfs_server on the cl_superblocks list for that nfs_client. To serialize changes to the cl_superblocks list during these little expeditions, protect the list with RCU. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: layout roc codeFred Isaman2011-01-066-6/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A layout can request return-on-close. How this interacts with the forgetful model of never sending LAYOUTRETURNS is a bit ambiguous. We forget any layouts marked roc, and wait for them to be completely forgotten before continuing with the close. In addition, to compensate for races with any inflight LAYOUTGETs, and the fact that we do not get any layout stateid back from the server, we set the barrier to the worst case scenario of current_seqid + number of outstanding LAYOUTGETS. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: update nfs4_callback_recallany to handle layoutsAlexandros Batsakis2011-01-062-3/+34
| | | | | | | | | | | | | | | | | | | | | | | | While here, update the code a bit. Signed-off-by: Alexandros Batsakis <batsakis@netapp.com> Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: add CB_LAYOUTRECALL handlingFred Isaman2011-01-064-20/+194
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the heart of the wave 2 submission. Add the code to trigger drain and forget of any afected layouts. In addition, we set a "barrier", below which any LAYOUTGET reply is ignored. This is to compensate for the fact that we do not wait for outstanding LAYOUTGETs to complete as per section 12.5.5.2.1 of RFC 5661. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: CB_LAYOUTRECALL xdr codeFred Isaman2011-01-063-1/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the xdr decoding for CB_LAYOUTRECALL. Signed-off-by: Alexandros Batsakis <batsakis@netapp.com> Signed-off-by: Dean Hildebrand <dhildeb@us.ibm.com> Signed-off-by: Marc Eshel <eshel@almaden.ibm.com> Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: change lo refcounting to atomic_tFred Isaman2011-01-062-24/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | This will be required to allow us to grab reference outside of i_lock. While we are at it, make put_layout_hdr take the same argument as all the related functions. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: check that partial LAYOUTGET return is ignoredFred Isaman2011-01-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Either a bad server reply, or our ignoring of multiple array segments in a reply, can cause a reply to not meet our requirements. Ensure that we ignore such replies. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: add layout to client list before sending rpcFred Isaman2011-01-061-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since this list will be used to search for layouts to recall, this is necessary to avoid a race where the recall comes in, sees there is nothing in the client list, and prepares to return NOMATCHING, while the LAYOUTGET gets processed before the recall updates the stateid. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: serialize LAYOUTGET(openstateid)Fred Isaman2011-01-064-10/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We shouldn't send a LAYOUTGET(openstateid) unless all outstanding RPCs using the previous stateid are completed. This requires choosing the stateid to encode earlier, so we can abort if one is not available (we want to use the open stateid, but a LAYOUTGET is already out using it), and adding a count of the number of outstanding rpc calls using layout state (which for now consist solely of LAYOUTGETs). Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: layoutget rpc code cleanupFred Isaman2011-01-061-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | No functional changes, just some code minor code rearrangement and comments. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: change how lsegs are removed from layout listFred Isaman2011-01-063-44/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is to prepare the way for sensible io draining. Instead of just removing the lseg from the list, we instead clear the VALID flag (preventing new io from grabbing references to the lseg) and remove the reference holding it in the list. Thus the lseg will be removed once any io in progress completes and any references still held are dropped. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: change layout state seqlock to a spinlockFred Isaman2011-01-063-61/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This prepares for future changes, where the layout state needs to change atomically with several other variables. In particular, it will need to know if lo->segs is empty, as we test that instead of manipulating the NFS_LAYOUT_STATEID_SET bit. Moreover, the layoutstateid is not really a read-mostly structure, as it is written almost as often as it is read. The behavior of pnfs_get_layout_stateid is also slightly changed, so that it no longer changes the stateid. Its name is changed to +pnfs_choose_layoutget_stateid. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: add prefix to struct pnfs_layout_hdr fieldsFred Isaman2011-01-063-56/+56
| | | | | | | | | | | | | | | Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: add prefix to struct pnfs_layout_segment fieldsFred Isaman2011-01-063-39/+39
| | | | | | | | | | | | | | | | | | | | | While we are renaming all the fields, change lo->state to lo->plh_flags. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: remove unnecessary field lgp->statusFred Isaman2011-01-061-2/+1
| | | | | | | | | | | | | | | | | | Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | pnfs: fix incorrect comment in destroy_lsegFred Isaman2011-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Comment references get_layout_hdr_locked, which never existed in submitted code. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS rename client back channel transport fieldAndy Adamson2011-01-061-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | Differentiate from server backchannel Signed-off-by: Andy Adamson <andros@netapp.com> Acked-by: Bruce Fields <bfields@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| * | NFS add session back channel drainingAndy Adamson2011-01-065-15/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently session draining only drains the fore channel. The back channel processing must also be drained. Use the back channel highest_slot_used to indicate that a callback is being processed by the callback thread. Move the session complete to be per channel. When the session is draininig, wait for any current back channel processing to complete and stop all new back channel processing by returning NFS4ERR_DELAY to the back channel client. Drain the back channel, then the fore channel. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
OpenPOWER on IntegriCloud