--- /dev/null
-b) improved sparse file support
+ ====
+ TODO
+ ====
+
+ Version 2.14 December 21, 2018
+
+ A Partial List of Missing Features
+ ==================================
+
+ Contributions are welcome. There are plenty of opportunities
+ for visible, important contributions to this module. Here
+ is a partial list of the known problems and missing features:
+
+ a) SMB3 (and SMB3.1.1) missing optional features:
+
+ - multichannel (started), integration with RDMA
+ - directory leases (improved metadata caching), started (root dir only)
+ - T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
+ currently the only two server side copy mechanisms supported)
+
-e) Additional use cases where we use "compoounding" (e.g. open/query/close
- and open/setinfo/close) to reduce the number of roundtrips, and also
- open to reduce redundant opens (using deferred close and reference counts
- more).
++b) improved sparse file support (fiemap and SEEK_HOLE are implemented
++ but additional features would be supportable by the protocol).
+
+ c) Directory entry caching relies on a 1 second timer, rather than
+ using Directory Leases, currently only the root file handle is cached longer
+
+ d) quota support (needs minor kernel change since quota calls
+ to make it to network filesystems or deviceless filesystems)
+
- (passthrough ioctl/fsctl for sending various SMB3 fsctls to the server
- is in progress, and a passthrough query_info call is already implemented
- in cifs.ko to allow smb3 info levels queries to be sent from userspace)
++e) Additional use cases can be optimized to use "compounding" (e.g.
++ open/query/close and open/setinfo/close) to reduce the number of
++ roundtrips to the server and improve performance. Various cases
++ (stat, statfs, create, unlink, mkdir) already have been improved by
++ using compounding but more can be done. In addition we could
++ significantly reduce redundant opens by using deferred close (with
++ handle caching leases) and better using reference counters on file
++ handles.
+
+ f) Finish inotify support so kde and gnome file list windows
+ will autorefresh (partially complete by Asser). Needs minor kernel
+ vfs change to support removing D_NOTIFY on a file.
+
+ g) Add GUI tool to configure /proc/fs/cifs settings and for display of
+ the CIFS statistics (started)
+
+ h) implement support for security and trusted categories of xattrs
+ (requires minor protocol extension) to enable better support for SELINUX
+
+ i) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol
+ feature (may be especially useful for virtualization).
+
+ j) Create UID mapping facility so server UIDs can be mapped on a per
+ mount or a per server basis to client UIDs or nobody if no mapping
+ exists. Also better integration with winbind for resolving SID owners
+
+ k) Add tools to take advantage of more smb3 specific ioctls and features
-n) allow setting more NTFS/SMB3 file attributes remotely (currently limited to
- compressed file attribute via chflags) and improve user space tools for
- managing and viewing them.
++ (passthrough ioctl/fsctl is now implemented in cifs.ko to allow
++ sending various SMB3 fsctls and query info and set info calls
++ directly from user space) Add tools to make setting various non-POSIX
++ metadata attributes easier from tools (e.g. extending what was done
++ in smb-info tool).
+
+ l) encrypted file support
+
+ m) improved stats gathering tools (perhaps integration with nfsometer?)
+ to extend and make easier to use what is currently in /proc/fs/cifs/Stats
+
++n) Add support for claims based ACLs ("DAC")
+
+ o) mount helper GUI (to simplify the various configuration options on mount)
+
+ p) Add support for witness protocol (perhaps ioctl to cifs.ko from user space
+ tool listening on witness protocol RPC) to allow for notification of share
+ move, server failover, and server adapter changes. And also improve other
+ failover scenarios, e.g. when client knows multiple DFS entries point to
+ different servers, and the server we are connected to has gone down.
+
+ q) Allow mount.cifs to be more verbose in reporting errors with dialect
+ or unsupported feature errors.
+
+ r) updating cifs documentation, and user guide.
+
+ s) Addressing bugs found by running a broader set of xfstests in standard
+ file system xfstest suite.
+
+ t) split cifs and smb3 support into separate modules so legacy (and less
+ secure) CIFS dialect can be disabled in environments that don't need it
+ and simplify the code.
+
+ v) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added
+ so far).
+
+ w) Add support for additional strong encryption types, and additional spnego
+ authentication mechanisms (see MS-SMB2)
+
++x) Finish support for SMB3.1.1 compression
++
+ Known Bugs
+ ==========
+
+ See http://bugzilla.samba.org - search on product "CifsVFS" for
+ current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
+
+ 1) existing symbolic links (Windows reparse points) are recognized but
+ can not be created remotely. They are implemented for Samba and those that
+ support the CIFS Unix extensions, although earlier versions of Samba
+ overly restrict the pathnames.
+ 2) follow_link and readdir code does not follow dfs junctions
+ but recognizes them
+
+ Misc testing to do
+ ==================
+ 1) check out max path names and max path name components against various server
+ types. Try nested symlinks (8 deep). Return max path name in stat -f information
+
+ 2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
+ cifs/smb3 better
+
+ 3) Additional performance testing and optimization using iozone and similar -
+ there are some easy changes that can be done to parallelize sequential writes,
+ and when signing is disabled to request larger read sizes (larger than
+ negotiated size) and send larger write sizes to modern servers.
+
+ 4) More exhaustively test against less common servers
+
+ 5) Continue to extend the smb3 "buildbot" which does automated xfstesting
+ against Windows, Samba and Azure currently - to add additional tests and
+ to allow the buildbot to execute the tests faster. The URL for the
+ buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
+
+ 6) Address various coverity warnings (most are not bugs per-se, but
+ the more warnings are addressed, the easier it is to spot real
+ problems that static analyzers will point out in the future).
--- /dev/null
- u32 res3; /* Reserved for additional RISC-V specific header */
+ =================================
+ Boot image header in RISC-V Linux
+ =================================
+
+ :Author: Atish Patra <atish.patra@wdc.com>
+ :Date: 20 May 2019
+
+ This document only describes the boot image header details for RISC-V Linux.
+
+ TODO:
+ Write a complete booting guide.
+
+ The following 64-byte header is present in decompressed Linux kernel image::
+
+ u32 code0; /* Executable code */
+ u32 code1; /* Executable code */
+ u64 text_offset; /* Image load offset, little endian */
+ u64 image_size; /* Effective Image size, little endian */
+ u64 flags; /* kernel flags, little endian */
+ u32 version; /* Version of this header */
+ u32 res1 = 0; /* Reserved */
+ u64 res2 = 0; /* Reserved */
+ u64 magic = 0x5643534952; /* Magic number, little endian, "RISCV" */
- The current version is defined as 0.1.
++ u32 magic2 = 0x56534905; /* Magic number 2, little endian, "RSC\x05" */
+ u32 res4; /* Reserved for PE COFF offset */
+
+ This header format is compliant with PE/COFF header and largely inspired from
+ ARM64 header. Thus, both ARM64 & RISC-V header can be combined into one common
+ header in future.
+
+ Notes
+ =====
+
+ - This header can also be reused to support EFI stub for RISC-V in future. EFI
+ specification needs PE/COFF image header in the beginning of the kernel image
+ in order to load it as an EFI application. In order to support EFI stub,
+ code0 should be replaced with "MZ" magic string and res5(at offset 0x3c) should
+ point to the rest of the PE/COFF header.
+
+ - version field indicate header version number
+
+ ========== =============
+ Bits 0:15 Minor version
+ Bits 16:31 Major version
+ ========== =============
+
+ This preserves compatibility across newer and older version of the header.
-- res3 is reserved for offset to any other additional fields. This makes the
- header extendible in future. One example would be to accommodate ISA
- extension for RISC-V in future. For current version, it is set to be zero.
++ The current version is defined as 0.2.
+
-- In current header, the flag field has only one field.
++- The "magic" field is deprecated as of version 0.2. In a future
++ release, it may be removed. This originally should have matched up
++ with the ARM64 header "magic" field, but unfortunately does not.
++ The "magic2" field replaces it, matching up with the ARM64 header.
+
++- In current header, the flags field has only one field.
+
+ ===== ====================================
+ Bit 0 Kernel endianness. 1 if BE, 0 if LE.
+ ===== ====================================
+
+ - Image size is mandatory for boot loader to load kernel image. Booting will
+ fail otherwise.