On Thu, Jan 31, 2013 at 06:03:06AM -0700, Alex Lyakas wrote:
> Hi,
> I want to check if any of the below issues are worth/should be  fixed:
> 
> # btrfs_ioctl_snap_destroy() does not commit a transaction. As a
> result, user can ask to delete a subvol, he receives "ok" back. Even
> if user does "btrfs sub list",
> he will not see the deleted subvol (even though the transaction was
> not committed yet). But if a crash happens, ORPHAN_ITEM will not
> re-appear after crash.
> So after crash, the subvolume still exists perfectly fine (happened
> couple of times here).

Same thing happens to normal unlinks, I don't see a reason to have different
rules for subvols.

> 
> # btrfs_drop_snapshot() does not commit a transaction after
> btrfs_del_orphan_item(). So if the subvol deletion completed in one go
> (did not have to detach and re-attach to transaction, thus committing
> the ORPHAN_ITEM and drop_progress/level), then after crash ORPHAN_ITEM
> will not be in the tree, and subvolume still exists.
> 

Again same thing happens with normal files.

> # btrfs_drop_snapshot() checks btrfs_should_end_transaction(), and
> then does btrfs_end_transaction_throttle() and
> btrfs_start_transaction(). However, it looks like it can rejoin the
> same transaction if transaction was not not blocked yet. Minor issue,
> perhaps?

No if we didn't block then its ok and we wait longer, we only throttle to give
the transaction stuff a chance to commit, so if the join logic decides its ok to
go on then we're good.

> 
> # umount may get delayed because of pending-for-deletion subvolumes:
> btrfs_commit_super() locks the cleaner_mutex, so it will wait for the
> cleaner to complete.
> On the other hand, cleaner will not give up until it completes
> processing all its splice. If currently cleaner is not running, then
> btrfs_commit_super()
> calls btrfs_clean_old_snapshots() directly. So does it make sense:
> - btrfs_commit_super() will not call btrfs_clean_old_snapshots()
> - close_ctree() calls kthread_stop(cleaner_kthread) early, and cleaner
> thread periodically checks if it needs to exit

I don't quite follow this, but sure?  Thanks,

Josef
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to