On Sat, Apr 07, 2018 at 06:43:19PM +0800, Anand Jain wrote: > On 04/07/2018 02:42 PM, Anand Jain wrote: > > On 04/04/2018 02:34 AM, David Sterba wrote: > >> The device replace is paused by unmount or read only remount, and > >> resumed on next mount or write remount. > >> > >> The exclusive status should be checked properly as it's a global > >> invariant and we must not allow 2 operations run. In this case, the > >> balance can be also paused and resumed under same conditions. It's > >> always checked first so dev-replace could see the EXCL_OP already taken, > >> BUT, the ioctl would never let start both at the same time. > >> > >> Replace the WARN_ON with message and return 0, indicating no error as > >> this is purely theoretical and the user will be informed. Resolving that > >> manually should be possible by waiting for the other operation to finish > >> or cancel the paused state. > > > > So if there is a paused balance and replace is triggered, a write > > remount will reverse the process? > > Ok, I am answering my own question: > Even if the balance is paused that's considered as an exclusive > operation in progress and does not let replace to start. So there > is no scenario where paused-balance and replace could co-exist.
The code is there to handle a theoretical but possible scenario, when the balance item and replace items are both on the filesytem image. > So an asset will be better insted of return 0. An assert may not be compile in and we still don't want to let dev-replace and balance run together. A WARN_ON or BUG in this case is too intrusive, a human readable error message says what to do, compared to a stacktrace and insight from somebody else. > + if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) { > + btrfs_info(fs_info, > + "cannot resume dev-replace, other exclusive operation running"); > + return 0; > + } -- 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