◐ Shell
clean mode source ↗

fs: expose frsize field in statfs · nodejs/node@40ccfde

Original file line numberDiff line numberDiff line change

@@ -7615,6 +7615,7 @@ numeric values will be `bigint` instead of `number`.

76157615

StatFs {

76167616

type: 1397114950,

76177617

bsize: 4096,

7618+

frsize: 4096,

76187619

blocks: 121938943,

76197620

bfree: 61058895,

76207621

bavail: 61058895,

@@ -7629,6 +7630,7 @@ StatFs {

76297630

StatFs {

76307631

type: 1397114950n,

76317632

bsize: 4096n,

7633+

frsize: 4096n,

76327634

blocks: 121938943n,

76337635

bfree: 61058895n,

76347636

bavail: 61058895n,

@@ -7685,6 +7687,16 @@ added:

76857687
76867688

Optimal transfer block size.

76877689
7690+

#### `statfs.frsize`

7691+
7692+

<!-- YAML

7693+

added: REPLACEME

7694+

-->

7695+
7696+

* Type: {number|bigint}

7697+
7698+

Fundamental file system block size.

7699+
76887700

#### `statfs.ffree`

76897701
76907702

<!-- YAML

Original file line numberDiff line numberDiff line change

@@ -571,9 +571,10 @@ function getStatsFromBinding(stats, offset = 0) {

571571

}

572572
573573

class StatFs {

574-

constructor(type, bsize, blocks, bfree, bavail, files, ffree) {

574+

constructor(type, bsize, frsize, blocks, bfree, bavail, files, ffree) {

575575

this.type = type;

576576

this.bsize = bsize;

577+

this.frsize = frsize;

577578

this.blocks = blocks;

578579

this.bfree = bfree;

579580

this.bavail = bavail;

@@ -584,7 +585,7 @@ class StatFs {

584585
585586

function getStatFsFromBinding(stats) {

586587

return new StatFs(

587-

stats[0], stats[1], stats[2], stats[3], stats[4], stats[5], stats[6],

588+

stats[0], stats[1], stats[2], stats[3], stats[4], stats[5], stats[6], stats[7],

588589

);

589590

}

590591
Original file line numberDiff line numberDiff line change

@@ -153,6 +153,7 @@ void FillStatFsArray(AliasedBufferBase<NativeT, V8T>* fields,

153153
154154

SET_FIELD(kType, s->f_type);

155155

SET_FIELD(kBSize, s->f_bsize);

156+

SET_FIELD(kFrSize, s->f_frsize);

156157

SET_FIELD(kBlocks, s->f_blocks);

157158

SET_FIELD(kBFree, s->f_bfree);

158159

SET_FIELD(kBAvail, s->f_bavail);

Original file line numberDiff line numberDiff line change

@@ -44,6 +44,7 @@ constexpr size_t kFsStatsBufferLength =

4444

enum class FsStatFsOffset {

4545

kType = 0,

4646

kBSize,

47+

kFrSize,

4748

kBlocks,

4849

kBFree,

4950

kBAvail,

Original file line numberDiff line numberDiff line change

@@ -89,6 +89,7 @@ function verifyStatFsObject(stat, isBigint = false) {

8989

assert.strictEqual(typeof stat, 'object');

9090

assert.strictEqual(typeof stat.type, valueType);

9191

assert.strictEqual(typeof stat.bsize, valueType);

92+

assert.strictEqual(typeof stat.frsize, valueType);

9293

assert.strictEqual(typeof stat.blocks, valueType);

9394

assert.strictEqual(typeof stat.bfree, valueType);

9495

assert.strictEqual(typeof stat.bavail, valueType);

Original file line numberDiff line numberDiff line change

@@ -7,7 +7,7 @@ function verifyStatFsObject(statfs, isBigint = false) {

77

const valueType = isBigint ? 'bigint' : 'number';

88
99

[

10-

'type', 'bsize', 'blocks', 'bfree', 'bavail', 'files', 'ffree',

10+

'type', 'bsize', 'frsize', 'blocks', 'bfree', 'bavail', 'files', 'ffree',

1111

].forEach((k) => {

1212

assert.ok(Object.hasOwn(statfs, k));

1313

assert.strictEqual(typeof statfs[k], valueType,