Commit 965938b8 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4.1: Get rid of pNFS layout state "NFS_LAYOUT_INVALID"

In all cases where we set NFS_LAYOUT_INVALID, we also set NFS_LAYOUT_DESTROYED.
Furthermore, in all cases where we test for NFS_LAYOUT_INVALID, we should
also be testing for NFS_LAYOUT_DESTROYED, since the latter means that
we hold no valid layout segments.
Ergo the two are redundant.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 1f7977c1
...@@ -190,8 +190,6 @@ static int filelayout_async_handle_error(struct rpc_task *task, ...@@ -190,8 +190,6 @@ static int filelayout_async_handle_error(struct rpc_task *task,
* i/o and all i/o waiting on the slot table to the MDS until * i/o and all i/o waiting on the slot table to the MDS until
* layout is destroyed and a new valid layout is obtained. * layout is destroyed and a new valid layout is obtained.
*/ */
set_bit(NFS_LAYOUT_INVALID,
&NFS_I(inode)->layout->plh_flags);
pnfs_destroy_layout(NFS_I(inode)); pnfs_destroy_layout(NFS_I(inode));
rpc_wake_up(&tbl->slot_tbl_waitq); rpc_wake_up(&tbl->slot_tbl_waitq);
goto reset; goto reset;
...@@ -281,7 +279,7 @@ filelayout_reset_to_mds(struct pnfs_layout_segment *lseg) ...@@ -281,7 +279,7 @@ filelayout_reset_to_mds(struct pnfs_layout_segment *lseg)
{ {
struct nfs4_deviceid_node *node = FILELAYOUT_DEVID_NODE(lseg); struct nfs4_deviceid_node *node = FILELAYOUT_DEVID_NODE(lseg);
return filelayout_test_layout_invalid(lseg->pls_layout) || return pnfs_test_layout_destroyed(lseg->pls_layout) ||
filelayout_test_devid_unavailable(node); filelayout_test_devid_unavailable(node);
} }
......
...@@ -128,12 +128,6 @@ filelayout_mark_devid_invalid(struct nfs4_deviceid_node *node) ...@@ -128,12 +128,6 @@ filelayout_mark_devid_invalid(struct nfs4_deviceid_node *node)
set_bit(NFS_DEVICEID_INVALID, &node->flags); set_bit(NFS_DEVICEID_INVALID, &node->flags);
} }
static inline bool
filelayout_test_layout_invalid(struct pnfs_layout_hdr *lo)
{
return test_bit(NFS_LAYOUT_INVALID, &lo->plh_flags);
}
static inline bool static inline bool
filelayout_test_devid_invalid(struct nfs4_deviceid_node *node) filelayout_test_devid_invalid(struct nfs4_deviceid_node *node)
{ {
......
...@@ -63,7 +63,6 @@ enum { ...@@ -63,7 +63,6 @@ enum {
NFS_LAYOUT_BULK_RECALL, /* bulk recall affecting layout */ NFS_LAYOUT_BULK_RECALL, /* bulk recall affecting layout */
NFS_LAYOUT_ROC, /* some lseg had roc bit set */ NFS_LAYOUT_ROC, /* some lseg had roc bit set */
NFS_LAYOUT_DESTROYED, /* no new use of layout allowed */ NFS_LAYOUT_DESTROYED, /* no new use of layout allowed */
NFS_LAYOUT_INVALID, /* layout is being destroyed */
NFS_LAYOUT_RETURNED, /* layout has already been returned */ NFS_LAYOUT_RETURNED, /* layout has already been returned */
}; };
...@@ -279,6 +278,12 @@ pnfs_test_layout_returned(struct pnfs_layout_hdr *lo) ...@@ -279,6 +278,12 @@ pnfs_test_layout_returned(struct pnfs_layout_hdr *lo)
return test_bit(NFS_LAYOUT_RETURNED, &lo->plh_flags); return test_bit(NFS_LAYOUT_RETURNED, &lo->plh_flags);
} }
static inline bool
pnfs_test_layout_destroyed(struct pnfs_layout_hdr *lo)
{
return test_bit(NFS_LAYOUT_DESTROYED, &lo->plh_flags);
}
static inline struct pnfs_layout_segment * static inline struct pnfs_layout_segment *
pnfs_get_lseg(struct pnfs_layout_segment *lseg) pnfs_get_lseg(struct pnfs_layout_segment *lseg)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment