All of lore.kernel.org
 help / color / mirror / Atom feed
* [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size
@ 2025-04-25  1:36 nl6720 via Linux-f2fs-devel
  2025-04-27  8:45 ` Chao Yu via Linux-f2fs-devel
  0 siblings, 1 reply; 5+ messages in thread
From: nl6720 via Linux-f2fs-devel @ 2025-04-25  1:36 UTC (permalink / raw)
  To: linux-f2fs-devel; +Cc: nl6720

Some drives operate in "512e" configuration with their logical block
size set to 512 bytes for legacy compatibility reasons while providing
a more optimal 4096 byte value as the physical block size.

Since the physical block size is the smallest unit a physical storage
device can write atomically, prefer it over the logical block size.

Closes: https://github.com/jaegeuk/f2fs-tools/issues/29

Signed-off-by: nl6720 <devnull@nl6720.me>
---
 lib/libf2fs.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index d2579d76a5c7eaf141dc8aad11c176eeadabad83..040ea4bc87288fa075cb4bf51df08b9db28a65b3 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -933,10 +933,15 @@ void get_kernel_uname_version(__u8 *version)
 #define BLKSSZGET	_IO(0x12,104)
 #endif
 
+#if defined(__linux__) && defined(_IO) && !defined(BLKPBSZGET)
+#define BLKPBSZGET	_IO(0x12,123)
+#endif
+
 #if defined(__APPLE__)
 #include <sys/disk.h>
 #define BLKGETSIZE	DKIOCGETBLOCKCOUNT
 #define BLKSSZGET	DKIOCGETBLOCKCOUNT
+#define BLKPBSZGET	DKIOCGETBLOCKCOUNT
 #endif /* APPLE_DARWIN */
 
 #ifndef _WIN32
@@ -1050,8 +1055,8 @@ int get_device_info(int i)
 	} else if (S_ISREG(stat_buf->st_mode)) {
 		dev->total_sectors = stat_buf->st_size / dev->sector_size;
 	} else if (S_ISBLK(stat_buf->st_mode)) {
-#ifdef BLKSSZGET
-		if (ioctl(fd, BLKSSZGET, &sector_size) < 0)
+#if defined(BLKPBSZGET) && defined(BLKSSZGET)
+		if ((ioctl(fd, BLKPBSZGET, &sector_size) < 0) && (ioctl(fd, BLKSSZGET, &sector_size) < 0))
 			MSG(0, "\tError: Using the default sector size\n");
 		else if (dev->sector_size < sector_size)
 			dev->sector_size = sector_size;
-- 
2.49.0



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size
  2025-04-25  1:36 [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size nl6720 via Linux-f2fs-devel
@ 2025-04-27  8:45 ` Chao Yu via Linux-f2fs-devel
  2025-04-27  9:30   ` nl6720 via Linux-f2fs-devel
  0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-04-27  8:45 UTC (permalink / raw)
  To: nl6720, linux-f2fs-devel

On 4/25/25 09:36, nl6720 via Linux-f2fs-devel wrote:
> Some drives operate in "512e" configuration with their logical block
> size set to 512 bytes for legacy compatibility reasons while providing
> a more optimal 4096 byte value as the physical block size.
> 
> Since the physical block size is the smallest unit a physical storage
> device can write atomically, prefer it over the logical block size.
> 
> Closes: https://github.com/jaegeuk/f2fs-tools/issues/29

f2fs uses PAGE_SIZE as block size, commonly it's 4096 rather than 512?

Thanks,

> 
> Signed-off-by: nl6720 <devnull@nl6720.me>
> ---
>  lib/libf2fs.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> index d2579d76a5c7eaf141dc8aad11c176eeadabad83..040ea4bc87288fa075cb4bf51df08b9db28a65b3 100644
> --- a/lib/libf2fs.c
> +++ b/lib/libf2fs.c
> @@ -933,10 +933,15 @@ void get_kernel_uname_version(__u8 *version)
>  #define BLKSSZGET	_IO(0x12,104)
>  #endif
>  
> +#if defined(__linux__) && defined(_IO) && !defined(BLKPBSZGET)
> +#define BLKPBSZGET	_IO(0x12,123)
> +#endif
> +
>  #if defined(__APPLE__)
>  #include <sys/disk.h>
>  #define BLKGETSIZE	DKIOCGETBLOCKCOUNT
>  #define BLKSSZGET	DKIOCGETBLOCKCOUNT
> +#define BLKPBSZGET	DKIOCGETBLOCKCOUNT
>  #endif /* APPLE_DARWIN */
>  
>  #ifndef _WIN32
> @@ -1050,8 +1055,8 @@ int get_device_info(int i)
>  	} else if (S_ISREG(stat_buf->st_mode)) {
>  		dev->total_sectors = stat_buf->st_size / dev->sector_size;
>  	} else if (S_ISBLK(stat_buf->st_mode)) {
> -#ifdef BLKSSZGET
> -		if (ioctl(fd, BLKSSZGET, &sector_size) < 0)
> +#if defined(BLKPBSZGET) && defined(BLKSSZGET)
> +		if ((ioctl(fd, BLKPBSZGET, &sector_size) < 0) && (ioctl(fd, BLKSSZGET, &sector_size) < 0))
>  			MSG(0, "\tError: Using the default sector size\n");
>  		else if (dev->sector_size < sector_size)
>  			dev->sector_size = sector_size;



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size
  2025-04-27  8:45 ` Chao Yu via Linux-f2fs-devel
@ 2025-04-27  9:30   ` nl6720 via Linux-f2fs-devel
  2025-04-28  7:33     ` Chao Yu via Linux-f2fs-devel
  0 siblings, 1 reply; 5+ messages in thread
From: nl6720 via Linux-f2fs-devel @ 2025-04-27  9:30 UTC (permalink / raw)
  To: linux-f2fs-devel, Chao Yu

On Sunday, 27 April 2025 11:45:59 EEST Chao Yu wrote:
> On 4/25/25 09:36, nl6720 via Linux-f2fs-devel wrote:
> > Some drives operate in "512e" configuration with their logical block
> > size set to 512 bytes for legacy compatibility reasons while providing
> > a more optimal 4096 byte value as the physical block size.
> > 
> > Since the physical block size is the smallest unit a physical storage
> > device can write atomically, prefer it over the logical block size.
> > 
> > Closes: https://github.com/jaegeuk/f2fs-tools/issues/29
> 
> f2fs uses PAGE_SIZE as block size, commonly it's 4096 rather than 512?

The thing mkfs.f2fs calls "sector size" in its output is 512 on 512e drives
instead of 4096.
E.g.:

    F2FS-tools: mkfs.f2fs Ver: 1.16.0 (2023-04-11)

Info: Disable heap-based policy
Info: Debug level = 0
Info: Trim is enabled
Info: [/dev/disk/by-partlabel/512e] Disk Model: QEMU HARDDISK   
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 124997632 (61034 MB)
Info: zone aligned segment0 blkaddr: 512
Info: format version with
  "Linux version 6.13.8-arch1-1 (linux@archlinux) (gcc (GCC) 14.2.1 20250207, GNU ld (GNU Binutils) 2.44) #1 SMP PREEMPT_DYNAMIC Sun, 23 Mar 2025 17:17:30 +0000"
Info: [/dev/disk/by-partlabel/512e] Discarding device
Info: This device doesn't support BLKSECDISCARD
Info: Discarded 61034 MB
Info: Overprovision ratio = 0.590%
Info: Overprovision segments = 179 (GC reserved = 176)
Info: format successful


nl6720




_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size
  2025-04-27  9:30   ` nl6720 via Linux-f2fs-devel
@ 2025-04-28  7:33     ` Chao Yu via Linux-f2fs-devel
  2025-04-29 16:53       ` nl6720 via Linux-f2fs-devel
  0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-04-28  7:33 UTC (permalink / raw)
  To: nl6720, linux-f2fs-devel

On 4/27/25 17:30, nl6720 wrote:
> On Sunday, 27 April 2025 11:45:59 EEST Chao Yu wrote:
>> On 4/25/25 09:36, nl6720 via Linux-f2fs-devel wrote:
>>> Some drives operate in "512e" configuration with their logical block
>>> size set to 512 bytes for legacy compatibility reasons while providing
>>> a more optimal 4096 byte value as the physical block size.
>>>
>>> Since the physical block size is the smallest unit a physical storage
>>> device can write atomically, prefer it over the logical block size.
>>>
>>> Closes: https://github.com/jaegeuk/f2fs-tools/issues/29
>>
>> f2fs uses PAGE_SIZE as block size, commonly it's 4096 rather than 512?
> 
> The thing mkfs.f2fs calls "sector size" in its output is 512 on 512e drives
> instead of 4096.

How about printing block size of f2fs as below:

output of mkfs.f2fs:

Info: sector size = 512
Info: total sectors = 16777216 (8192 MB)
Info: block size = 4096

Thanks,

> E.g.:
> 
>     F2FS-tools: mkfs.f2fs Ver: 1.16.0 (2023-04-11)
> 
> Info: Disable heap-based policy
> Info: Debug level = 0
> Info: Trim is enabled
> Info: [/dev/disk/by-partlabel/512e] Disk Model: QEMU HARDDISK   
> Info: Segments per section = 1
> Info: Sections per zone = 1
> Info: sector size = 512
> Info: total sectors = 124997632 (61034 MB)
> Info: zone aligned segment0 blkaddr: 512
> Info: format version with
>   "Linux version 6.13.8-arch1-1 (linux@archlinux) (gcc (GCC) 14.2.1 20250207, GNU ld (GNU Binutils) 2.44) #1 SMP PREEMPT_DYNAMIC Sun, 23 Mar 2025 17:17:30 +0000"
> Info: [/dev/disk/by-partlabel/512e] Discarding device
> Info: This device doesn't support BLKSECDISCARD
> Info: Discarded 61034 MB
> Info: Overprovision ratio = 0.590%
> Info: Overprovision segments = 179 (GC reserved = 176)
> Info: format successful
> 
> 
> nl6720
> 
> 



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size
  2025-04-28  7:33     ` Chao Yu via Linux-f2fs-devel
@ 2025-04-29 16:53       ` nl6720 via Linux-f2fs-devel
  0 siblings, 0 replies; 5+ messages in thread
From: nl6720 via Linux-f2fs-devel @ 2025-04-29 16:53 UTC (permalink / raw)
  To: linux-f2fs-devel, Chao Yu

On Monday, 28 April 2025 10:33:18 EEST Chao Yu wrote:
> How about printing block size of f2fs as below:
> 
> output of mkfs.f2fs:
> 
> Info: sector size = 512
> Info: total sectors = 16777216 (8192 MB)
> Info: block size = 4096

mkfs.f2fs printing it would be nice.

I'm still confused by the "sector size" in mkfs.f2fs output. Is it simply the
drive's logical sector size and not a fundamental part of the file system
like with xfs?

nl6720




_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-04-29 16:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-25  1:36 [f2fs-dev] [PATCH] f2fs-tools: prefer physical over logical block size nl6720 via Linux-f2fs-devel
2025-04-27  8:45 ` Chao Yu via Linux-f2fs-devel
2025-04-27  9:30   ` nl6720 via Linux-f2fs-devel
2025-04-28  7:33     ` Chao Yu via Linux-f2fs-devel
2025-04-29 16:53       ` nl6720 via Linux-f2fs-devel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.