On Fri, Jun 10, 2016 at 04:37:35PM -0400, Benjamin Coddington wrote:
The last put of deviceid nodes for SCSI layouts may sleep, so we
shouldn't
hold any spinlocks. Make sure we put them outside the bl_ext_lock.
Signed-off-by: Benjamin Coddington <bcodding@xxxxxxxxxx>
Thanks Benjamin,
the patch looks fine:
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Although maybe it's worth addressing a few naming nitpicks:
+static void __ext_put_deviceids(struct list_head *head)
No need for the __ here.
static int
-__ext_tree_remove(struct rb_root *root, sector_t start, sector_t
end)
+__ext_tree_remove(struct rb_root *root,
+ sector_t start, sector_t end, struct list_head *tmp)
{
Maybe instead of tmp this could be called to_free?
+ LIST_HEAD(tmp);
spin_lock(&bl->bl_ext_lock);
- err = __ext_tree_remove(&bl->bl_ext_ro, start, end);
+ err = __ext_tree_remove(&bl->bl_ext_ro, start, end, &tmp);
if (rw) {
- err2 = __ext_tree_remove(&bl->bl_ext_rw, start, end);
+ err2 = __ext_tree_remove(&bl->bl_ext_rw, start, end, &tmp);
Same here,
@@ -396,12 +408,13 @@ ext_tree_mark_written(struct pnfs_block_layout
*bl, sector_t start,
sector_t end = start + len;
struct pnfs_block_extent *be;
int err = 0;
+ LIST_HEAD(tmp);
and here.
OK. I'll send a V2.
Ben
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html