mirror of
https://github.com/deepseek-ai/3FS
synced 2025-05-28 09:08:11 +00:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import argparse
|
|
import fcntl
|
|
import os
|
|
import struct
|
|
|
|
FS_IOC_GETFLAGS = 0x80086601
|
|
FS_IOC_SETFLAGS = 0x40086602
|
|
FS_HUGE_FILE_FL = 0x00040000
|
|
FS_UNSUPPORTED_FL = 0x00800000
|
|
|
|
|
|
def get_iflags(file_path):
|
|
with open(file_path, "rb") as f:
|
|
buf = struct.pack("I", 0)
|
|
flags = fcntl.ioctl(f.fileno(), FS_IOC_GETFLAGS, buf)
|
|
iflags = struct.unpack("I", flags)[0]
|
|
return iflags
|
|
|
|
|
|
def set_iflags(file_path, iflags):
|
|
with open(file_path, "rb") as f:
|
|
buf = struct.pack("I", iflags)
|
|
fcntl.ioctl(f.fileno(), FS_IOC_SETFLAGS, buf)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("file_path")
|
|
args = parser.parse_args()
|
|
|
|
current_iflags = get_iflags(args.file_path)
|
|
print(f"Current iflags: {current_iflags:#010x}")
|
|
|
|
new_iflags = current_iflags | FS_HUGE_FILE_FL
|
|
set_iflags(args.file_path, new_iflags)
|
|
|
|
updated_iflags = get_iflags(args.file_path)
|
|
print(f"Updated iflags: {updated_iflags:#010x}")
|
|
assert updated_iflags == new_iflags
|
|
|
|
try:
|
|
set_iflags(args.file_path, updated_iflags | FS_UNSUPPORTED_FL)
|
|
assert False
|
|
except OSError as ex:
|
|
print("set FS_UNSUPPORTED_FL", ex)
|
|
pass
|