Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp1349233pxx; Fri, 30 Oct 2020 08:05:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPh0WlMAVKFAsgMRwnI2NfBG3H6AM3Lbpzu7nU4YeKLCZI037B9DsYUpJR946KPJizh4Zz X-Received: by 2002:a05:6402:742:: with SMTP id p2mr2895835edy.107.1604070308436; Fri, 30 Oct 2020 08:05:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1604070308; cv=none; d=google.com; s=arc-20160816; b=k3CDTsthMEd4W3QeVc3EcVOREvDT/jbfc6f2yL1CNXEiq8QEG9pDevQDiTykWAjgwF L7rRM8rDbEXGjMEhJX9eObWBCZi/ZoVGLGOOsIkCuFYdsRmVA7CDeAg6FW55xXz91Yek zeiQ6L7j9uvJBM84289EIgwlyfR7zr3apTLOVsdIfFEb7XDxWV/7aoZMbmlZVOjY34nN 3Rxxtfh4tF2TKTpPXUZnbDVFqheMrlmXLsH9SzgeEdoBLop5cQa4K7+kkszIPwNZPRuM GGD+cwrSWUqaMLfX44C8ItwuV+6mk61Ia6SMWxbu7kWMMzAjs0ChYNOfPJpHBgUOxiEl 3GsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject:dkim-signature; bh=oBF1TFul14bSYFHSUPJw/eXRgL05OsoRhgU41vvEmBA=; b=a8V7nViiPjKzfvoiotjqTYZIrnQkPyITlf2pTYfWxv6EKPqqZX5dgNJyoZ07RpqPOM 3CE8vS7CcMAhhD1haGurOZF1HJqQcO+Sm2bVgW1htJUh2R9sk5466dx9OzIQa3euwNXL PNjolBWYhwWgywYoeV91g4yAJ8TVigqZLGBMCl/VlCXgxWTbl+aRQTVXYH91pboAKl3c SAKLJly4/cBBwXVU3cOE+8XluDDObfAavyqILSbU+t6wYXNIzm+B23VxTYz4MFbmWe+Q s55n4YtPwTwGgORaz/j109GFADh2IV8bWrM983ZLPlG/B8U6tmqjJHosecC2Yn5t9V8+ 6TPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=seRRDOge; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j6si4562168edq.334.2020.10.30.08.04.44; Fri, 30 Oct 2020 08:05:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=seRRDOge; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726867AbgJ3PD1 (ORCPT + 99 others); Fri, 30 Oct 2020 11:03:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:46978 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726642AbgJ3PD0 (ORCPT ); Fri, 30 Oct 2020 11:03:26 -0400 Received: from [192.168.0.105] (unknown [117.89.214.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1EAB32075E; Fri, 30 Oct 2020 15:03:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604070204; bh=jn3fWnoz79KnJ/0/j/SqRAF00voMWN+cRg4NeO7wud0=; h=Subject:To:References:Cc:From:Date:In-Reply-To:From; b=seRRDOgeXWYIJz0wQK/xqDDCOP9yaJxhTILaKrGogACVSecPwbCqF31e9fElWuRok OJmDhZ+bFAlg7Cs93MxS40BjCKjhASHPUx1tYsFVPR9l0Fo3jamqcOA3Aa5C+AGNEp 5xf18AGWeynOhrHzXINa1gHByIUBXCAZBXXJq4WQ= Subject: Re: [PATCH v2] f2fs: move ioctl interface definitions to separated file To: Jaegeuk Kim , Chao Yu References: <20201030072610.57155-1-yuchao0@huawei.com> <20201030123059.GA1877745@google.com> Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org From: Chao Yu Message-ID: Date: Fri, 30 Oct 2020 23:03:01 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20201030123059.GA1877745@google.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-10-30 20:30, Jaegeuk Kim wrote: > Hi Chao, > > Can we make a documentation for this in f2fs.rst? Jaegeuk, Sure, let me work on this. Thanks, > > Thanks, > > On 10/30, Chao Yu wrote: >> Like other filesystem does, we introduce a new file f2fs.h in path of >> include/uapi/linux/, and move f2fs-specified ioctl interface definitions >> to that file, after then, in order to use those definitions, userspace >> developer only need to include the new header file rather than >> copy & paste definitions from fs/f2fs/f2fs.h. >> >> Signed-off-by: Chao Yu >> --- >> v2: add missing "WITH Linux-syscall-note" for SPDX-License-Identifier >> MAINTAINERS | 1 + >> fs/f2fs/f2fs.h | 79 ---------------------------------- >> fs/f2fs/file.c | 1 + >> include/trace/events/f2fs.h | 1 + >> include/uapi/linux/f2fs.h | 86 +++++++++++++++++++++++++++++++++++++ >> 5 files changed, 89 insertions(+), 79 deletions(-) >> create mode 100644 include/uapi/linux/f2fs.h >> >> diff --git a/MAINTAINERS b/MAINTAINERS >> index d1d4e49a695a..b79a911f1e32 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -6686,6 +6686,7 @@ F: Documentation/filesystems/f2fs.rst >> F: fs/f2fs/ >> F: include/linux/f2fs_fs.h >> F: include/trace/events/f2fs.h >> +F: include/uapi/linux/f2fs.h >> >> F71805F HARDWARE MONITORING DRIVER >> M: Jean Delvare >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h >> index cb700d797296..99bcf4b44a9c 100644 >> --- a/fs/f2fs/f2fs.h >> +++ b/fs/f2fs/f2fs.h >> @@ -402,85 +402,6 @@ static inline bool __has_cursum_space(struct f2fs_journal *journal, >> return size <= MAX_SIT_JENTRIES(journal); >> } >> >> -/* >> - * f2fs-specific ioctl commands >> - */ >> -#define F2FS_IOCTL_MAGIC 0xf5 >> -#define F2FS_IOC_START_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 1) >> -#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2) >> -#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3) >> -#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4) >> -#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5) >> -#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32) >> -#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7) >> -#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, \ >> - struct f2fs_defragment) >> -#define F2FS_IOC_MOVE_RANGE _IOWR(F2FS_IOCTL_MAGIC, 9, \ >> - struct f2fs_move_range) >> -#define F2FS_IOC_FLUSH_DEVICE _IOW(F2FS_IOCTL_MAGIC, 10, \ >> - struct f2fs_flush_device) >> -#define F2FS_IOC_GARBAGE_COLLECT_RANGE _IOW(F2FS_IOCTL_MAGIC, 11, \ >> - struct f2fs_gc_range) >> -#define F2FS_IOC_GET_FEATURES _IOR(F2FS_IOCTL_MAGIC, 12, __u32) >> -#define F2FS_IOC_SET_PIN_FILE _IOW(F2FS_IOCTL_MAGIC, 13, __u32) >> -#define F2FS_IOC_GET_PIN_FILE _IOR(F2FS_IOCTL_MAGIC, 14, __u32) >> -#define F2FS_IOC_PRECACHE_EXTENTS _IO(F2FS_IOCTL_MAGIC, 15) >> -#define F2FS_IOC_RESIZE_FS _IOW(F2FS_IOCTL_MAGIC, 16, __u64) >> -#define F2FS_IOC_GET_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 17, __u64) >> -#define F2FS_IOC_RELEASE_COMPRESS_BLOCKS \ >> - _IOR(F2FS_IOCTL_MAGIC, 18, __u64) >> -#define F2FS_IOC_RESERVE_COMPRESS_BLOCKS \ >> - _IOR(F2FS_IOCTL_MAGIC, 19, __u64) >> -#define F2FS_IOC_SEC_TRIM_FILE _IOW(F2FS_IOCTL_MAGIC, 20, \ >> - struct f2fs_sectrim_range) >> - >> -/* >> - * should be same as XFS_IOC_GOINGDOWN. >> - * Flags for going down operation used by FS_IOC_GOINGDOWN >> - */ >> -#define F2FS_IOC_SHUTDOWN _IOR('X', 125, __u32) /* Shutdown */ >> -#define F2FS_GOING_DOWN_FULLSYNC 0x0 /* going down with full sync */ >> -#define F2FS_GOING_DOWN_METASYNC 0x1 /* going down with metadata */ >> -#define F2FS_GOING_DOWN_NOSYNC 0x2 /* going down */ >> -#define F2FS_GOING_DOWN_METAFLUSH 0x3 /* going down with meta flush */ >> -#define F2FS_GOING_DOWN_NEED_FSCK 0x4 /* going down to trigger fsck */ >> - >> -/* >> - * Flags used by F2FS_IOC_SEC_TRIM_FILE >> - */ >> -#define F2FS_TRIM_FILE_DISCARD 0x1 /* send discard command */ >> -#define F2FS_TRIM_FILE_ZEROOUT 0x2 /* zero out */ >> -#define F2FS_TRIM_FILE_MASK 0x3 >> - >> -struct f2fs_gc_range { >> - u32 sync; >> - u64 start; >> - u64 len; >> -}; >> - >> -struct f2fs_defragment { >> - u64 start; >> - u64 len; >> -}; >> - >> -struct f2fs_move_range { >> - u32 dst_fd; /* destination fd */ >> - u64 pos_in; /* start position in src_fd */ >> - u64 pos_out; /* start position in dst_fd */ >> - u64 len; /* size to move */ >> -}; >> - >> -struct f2fs_flush_device { >> - u32 dev_num; /* device number to flush */ >> - u32 segments; /* # of segments to flush */ >> -}; >> - >> -struct f2fs_sectrim_range { >> - u64 start; >> - u64 len; >> - u64 flags; >> -}; >> - >> /* for inline stuff */ >> #define DEF_INLINE_RESERVED_SIZE 1 >> static inline int get_extra_isize(struct inode *inode); >> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c >> index ee861c6d9ff0..d898f1e2764b 100644 >> --- a/fs/f2fs/file.c >> +++ b/fs/f2fs/file.c >> @@ -31,6 +31,7 @@ >> #include "gc.h" >> #include "trace.h" >> #include >> +#include >> >> static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) >> { >> diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h >> index f8f1e85ff130..56b113e3cd6a 100644 >> --- a/include/trace/events/f2fs.h >> +++ b/include/trace/events/f2fs.h >> @@ -6,6 +6,7 @@ >> #define _TRACE_F2FS_H >> >> #include >> +#include >> >> #define show_dev(dev) MAJOR(dev), MINOR(dev) >> #define show_dev_ino(entry) show_dev(entry->dev), (unsigned long)entry->ino >> diff --git a/include/uapi/linux/f2fs.h b/include/uapi/linux/f2fs.h >> new file mode 100644 >> index 000000000000..ad25786feaa1 >> --- /dev/null >> +++ b/include/uapi/linux/f2fs.h >> @@ -0,0 +1,86 @@ >> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ >> +#ifndef _UAPI_LINUX_F2FS_H >> +#define _UAPI_LINUX_F2FS_H >> + >> +#include >> + >> +/* >> + * f2fs-specific ioctl commands >> + */ >> +#define F2FS_IOCTL_MAGIC 0xf5 >> +#define F2FS_IOC_START_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 1) >> +#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2) >> +#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3) >> +#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4) >> +#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5) >> +#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32) >> +#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7) >> +#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, \ >> + struct f2fs_defragment) >> +#define F2FS_IOC_MOVE_RANGE _IOWR(F2FS_IOCTL_MAGIC, 9, \ >> + struct f2fs_move_range) >> +#define F2FS_IOC_FLUSH_DEVICE _IOW(F2FS_IOCTL_MAGIC, 10, \ >> + struct f2fs_flush_device) >> +#define F2FS_IOC_GARBAGE_COLLECT_RANGE _IOW(F2FS_IOCTL_MAGIC, 11, \ >> + struct f2fs_gc_range) >> +#define F2FS_IOC_GET_FEATURES _IOR(F2FS_IOCTL_MAGIC, 12, __u32) >> +#define F2FS_IOC_SET_PIN_FILE _IOW(F2FS_IOCTL_MAGIC, 13, __u32) >> +#define F2FS_IOC_GET_PIN_FILE _IOR(F2FS_IOCTL_MAGIC, 14, __u32) >> +#define F2FS_IOC_PRECACHE_EXTENTS _IO(F2FS_IOCTL_MAGIC, 15) >> +#define F2FS_IOC_RESIZE_FS _IOW(F2FS_IOCTL_MAGIC, 16, __u64) >> +#define F2FS_IOC_GET_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 17, __u64) >> +#define F2FS_IOC_RELEASE_COMPRESS_BLOCKS \ >> + _IOR(F2FS_IOCTL_MAGIC, 18, __u64) >> +#define F2FS_IOC_RESERVE_COMPRESS_BLOCKS \ >> + _IOR(F2FS_IOCTL_MAGIC, 19, __u64) >> +#define F2FS_IOC_SEC_TRIM_FILE _IOW(F2FS_IOCTL_MAGIC, 20, \ >> + struct f2fs_sectrim_range) >> + >> +/* >> + * should be same as XFS_IOC_GOINGDOWN. >> + * Flags for going down operation used by FS_IOC_GOINGDOWN >> + */ >> +#define F2FS_IOC_SHUTDOWN _IOR('X', 125, __u32) /* Shutdown */ >> +#define F2FS_GOING_DOWN_FULLSYNC 0x0 /* going down with full sync */ >> +#define F2FS_GOING_DOWN_METASYNC 0x1 /* going down with metadata */ >> +#define F2FS_GOING_DOWN_NOSYNC 0x2 /* going down */ >> +#define F2FS_GOING_DOWN_METAFLUSH 0x3 /* going down with meta flush */ >> +#define F2FS_GOING_DOWN_NEED_FSCK 0x4 /* going down to trigger fsck */ >> + >> +/* >> + * Flags used by F2FS_IOC_SEC_TRIM_FILE >> + */ >> +#define F2FS_TRIM_FILE_DISCARD 0x1 /* send discard command */ >> +#define F2FS_TRIM_FILE_ZEROOUT 0x2 /* zero out */ >> +#define F2FS_TRIM_FILE_MASK 0x3 >> + >> +struct f2fs_gc_range { >> + u32 sync; >> + u64 start; >> + u64 len; >> +}; >> + >> +struct f2fs_defragment { >> + u64 start; >> + u64 len; >> +}; >> + >> +struct f2fs_move_range { >> + u32 dst_fd; /* destination fd */ >> + u64 pos_in; /* start position in src_fd */ >> + u64 pos_out; /* start position in dst_fd */ >> + u64 len; /* size to move */ >> +}; >> + >> +struct f2fs_flush_device { >> + u32 dev_num; /* device number to flush */ >> + u32 segments; /* # of segments to flush */ >> +}; >> + >> +struct f2fs_sectrim_range { >> + u64 start; >> + u64 len; >> + u64 flags; >> +}; >> + >> +#endif /* _UAPI_LINUX_F2FS_H */ >> -- >> 2.26.2