diff options
author | Sachin Bhamare <sbhamare@panasas.com> | 2012-03-19 23:47:58 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-21 09:31:47 -0400 |
commit | 18d98f6c04991dd3c12acf6f39cea40e9510640a (patch) | |
tree | 2057833de8c2c6bb4e3530eed44249b3941b99d8 /Documentation/filesystems/nfs/pnfs.txt | |
parent | c6bfa1a16377b42496ecc0490a33516c0e414e7b (diff) |
pnfs-obj: autologin: Add support for protocol autologin
The pnfs-objects protocol mandates that we autologin into devices not
present in the system, according to information specified in the
get_device_info returned from the server.
The Protocol specifies two login hints.
1. An IP address:port combination
2. A string URI which is constructed as a URL with a protocol prefix
followed by :// and a string as address. For each protocol prefix
the string-address format might be different.
We only support the second option. The first option is just redundant
to the second one.
NOTE: The Kernel part of autologin does not parse the URI string. It
just channels it to a user-mode script. So any new login protocols should
only update the user-mode script which is a part of the nfs-utils package,
but the Kernel need not change.
We implement the autologin by using the call_usermodehelper() API.
(Thanks to Steve Dickson <steved@redhat.com> for pointing it out)
So there is no running daemon needed, and/or special setup.
We Add the osd_login_prog Kernel module parameters which defaults to:
/sbin/osd_login
Kernel try's to upcall the program specified in osd_login_prog. If the file is
not found or the execution fails Kernel will disable any farther upcalls, by
zeroing out osd_login_prog, Until Admin re-enables it by setting the
osd_login_prog parameter to a proper program.
Also add text about the osd_login program command line API to:
Documentation/filesystems/nfs/pnfs.txt
and documentation of the new osd_login_prog module parameter to:
Documentation/kernel-parameters.txt
TODO: Add timeout option in the case osd_login program gets
stuck
Signed-off-by: Sachin Bhamare <sbhamare@panasas.com>
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'Documentation/filesystems/nfs/pnfs.txt')
-rw-r--r-- | Documentation/filesystems/nfs/pnfs.txt | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index 983e14abe7e9..c7919c6e3bea 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -53,3 +53,57 @@ lseg maintains an extra reference corresponding to the NFS_LSEG_VALID | |||
53 | bit which holds it in the pnfs_layout_hdr's list. When the final lseg | 53 | bit which holds it in the pnfs_layout_hdr's list. When the final lseg |
54 | is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED | 54 | is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED |
55 | bit is set, preventing any new lsegs from being added. | 55 | bit is set, preventing any new lsegs from being added. |
56 | |||
57 | layout drivers | ||
58 | -------------- | ||
59 | |||
60 | PNFS utilizes what is called layout drivers. The STD defines 3 basic | ||
61 | layout types: "files" "objects" and "blocks". For each of these types | ||
62 | there is a layout-driver with a common function-vectors table which | ||
63 | are called by the nfs-client pnfs-core to implement the different layout | ||
64 | types. | ||
65 | |||
66 | Files-layout-driver code is in: fs/nfs/nfs4filelayout.c && nfs4filelayoutdev.c | ||
67 | Objects-layout-deriver code is in: fs/nfs/objlayout/.. directory | ||
68 | Blocks-layout-deriver code is in: fs/nfs/blocklayout/.. directory | ||
69 | |||
70 | objects-layout setup | ||
71 | -------------------- | ||
72 | |||
73 | As part of the full STD implementation the objlayoutdriver.ko needs, at times, | ||
74 | to automatically login to yet undiscovered iscsi/osd devices. For this the | ||
75 | driver makes up-calles to a user-mode script called *osd_login* | ||
76 | |||
77 | The path_name of the script to use is by default: | ||
78 | /sbin/osd_login. | ||
79 | This name can be overridden by the Kernel module parameter: | ||
80 | objlayoutdriver.osd_login_prog | ||
81 | |||
82 | If Kernel does not find the osd_login_prog path it will zero it out | ||
83 | and will not attempt farther logins. An admin can then write new value | ||
84 | to the objlayoutdriver.osd_login_prog Kernel parameter to re-enable it. | ||
85 | |||
86 | The /sbin/osd_login is part of the nfs-utils package, and should usually | ||
87 | be installed on distributions that support this Kernel version. | ||
88 | |||
89 | The API to the login script is as follows: | ||
90 | Usage: $0 -u <URI> -o <OSDNAME> -s <SYSTEMID> | ||
91 | Options: | ||
92 | -u target uri e.g. iscsi://<ip>:<port> | ||
93 | (allways exists) | ||
94 | (More protocols can be defined in the future. | ||
95 | The client does not interpret this string it is | ||
96 | passed unchanged as recieved from the Server) | ||
97 | -o osdname of the requested target OSD | ||
98 | (Might be empty) | ||
99 | (A string which denotes the OSD name, there is a | ||
100 | limit of 64 chars on this string) | ||
101 | -s systemid of the requested target OSD | ||
102 | (Might be empty) | ||
103 | (This string, if not empty is always an hex | ||
104 | representation of the 20 bytes osd_system_id) | ||
105 | |||
106 | blocks-layout setup | ||
107 | ------------------- | ||
108 | |||
109 | TODO: Document the setup needs of the blocks layout driver | ||