From: Eric Wheeler <bcache@lists.ewheeler.net>
To: Andrea Tomassetti <andrea.tomassetti-opensource@devo.com>
Cc: Coly Li <colyli@suse.de>,
Kent Overstreet <kent.overstreet@gmail.com>,
linux-bcache@vger.kernel.org
Subject: Re: [RFC] Live resize of backing device
Date: Fri, 5 Aug 2022 12:38:33 -0700 (PDT) [thread overview]
Message-ID: <9474c19e-56f0-cb4d-68c-405c55aef281@ewheeler.net> (raw)
In-Reply-To: <CAHykVA5sgGooeRjM1EepCCpZqkvtQJ_=cY8hmjqe0oQ3FLDFnQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2220 bytes --]
On Wed, 3 Aug 2022, Andrea Tomassetti wrote:
> Hi Coly,
> In one of our previous emails you said that
> > Currently bcache doesn’t support cache or backing device resize
>
> I was investigating this point and I actually found a solution. I
> briefly tested it and it seems to work fine.
> Basically what I'm doing is:
> 1. Check if there's any discrepancy between the nr of sectors
> reported by the bcache backing device (holder) and the nr of sectors
> reported by its parent (slave).
> 2. If the number of sectors of the two devices are not the same,
> then call set_capacity_and_notify on the bcache device.
> 3. From user space, depending on the fs used, grow the fs with some
> utility (e.g. xfs_growfs)
>
> This works without any need of unmounting the mounted fs nor stopping
> the bcache backing device.
Well done! +1, would love to see a patch for this!
> So my question is: am I missing something? Can this live resize cause
> some problems (e.g. data loss)? Would it be useful if I send a patch on
> this?
A while a go we looked into doing this. Here is the summary of our
findings, not sure if there are any other considerations:
1. Create a sysfs file like /sys/block/bcache0/bcache/resize to trigger
resize on echo 1 >.
2. Refactor the set_capacity() bits from bcache_device_init() into its
own function.
3. Put locks around bcache_device.full_dirty_stripes and
bcache_device.stripe_sectors_dirty. Re-alloc+copy+free and zero the
new bytes at the end. Grep where bcache_device.full_dirty_stripes is
used and make sure it is locked appropriately, probably in the
writeback thread, maybe other places too.
The cachedev's don't know anything about the bdev size, so (according to
Kent) they will "just work" by referencing new offsets that were
previously beyond the disk. (This is basically the same as resizing the
bdev and then unregister/re-register which is how we resize bdevs now.)
As for resizing a cachedev, I've not looked at all---not sure about that
one. We always detach, resize, make-bcache and re-attach the new cache.
Maybe it is similarly simple, but haven't looked.
--
Eric Wheeler
>
> Kind regards,
> Andrea
>
next prev parent reply other threads:[~2022-08-05 19:38 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-03 10:05 [RFC] Live resize of backing device Andrea Tomassetti
2022-08-04 14:32 ` Coly Li
2022-08-05 19:38 ` Eric Wheeler [this message]
2022-09-06 13:22 ` Andrea Tomassetti
2022-09-08 8:32 ` Andrea Tomassetti
2022-09-19 11:42 ` Andrea Tomassetti
2022-09-19 12:16 ` Coly Li
2022-12-09 8:57 ` Andrea Tomassetti
2022-12-09 9:36 ` Coly Li
2022-12-30 10:40 ` Coly Li
2023-01-11 16:01 ` Andrea Tomassetti
2023-01-17 13:08 ` Error messages with kernel 6.1.[56] Pierre Juhen
2023-01-17 16:08 ` Coly Li
2023-01-17 16:18 ` [RFC] Live resize of backing device Coly Li
2023-01-25 10:07 ` Andrea Tomassetti
2023-01-25 17:59 ` Coly Li
2023-01-27 12:44 ` Andrea Tomassetti
2023-01-27 22:40 ` Eric Wheeler
2023-01-31 10:20 ` Andrea Tomassetti
2023-02-02 17:18 ` Coly Li
2023-02-02 20:48 ` Eric Wheeler
2023-02-03 2:41 ` Coly Li
2023-02-19 9:39 ` Coly Li
2023-02-20 8:27 ` mingzhe
2023-02-20 12:29 ` Coly Li
2023-02-22 8:42 ` Andrea Tomassetti
2023-02-27 22:08 ` Eric Wheeler
2023-02-28 2:46 ` mingzhe
2023-01-27 2:53 ` [RFC] Live resize of bcache " Eric Wheeler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9474c19e-56f0-cb4d-68c-405c55aef281@ewheeler.net \
--to=bcache@lists.ewheeler.net \
--cc=andrea.tomassetti-opensource@devo.com \
--cc=colyli@suse.de \
--cc=kent.overstreet@gmail.com \
--cc=linux-bcache@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).