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: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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 {
|
|||||||
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)
|
|||||||
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)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user