All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <mchristi@redhat.com>
To: bvanassche@acm.org, bstroesser@ts.fujitsu.com,
	martin.petersen@oracle.com, linux-scsi@vger.kernel.org,
	target-devel@vger.kernel.org
Subject: [PATCH 00/11] target: add sysfs support
Date: Tue, 28 Apr 2020 06:10:58 +0000	[thread overview]
Message-ID: <20200428061109.3042-1-mchristi@redhat.com> (raw)

The following patches made over Linus's current tree allow lio to
export info about structs that the kernel initiates creation of
via events like initiator login where there is no user interaction
like a mkdir. These patches specificially focus on the
I_T_nexus/session but could be used for other objects if we want.

Why sysfs when we have configfs?

I started with configfs and hit bugs like:

commit cc57c07343bd071cdf1915a91a24ab7d40c9b590
Author: Mike Christie <mchristi@redhat.com>
Date:   Sun Jul 15 18:16:17 2018 -0500

    configfs: fix registered group removal

but it turns out that bug was not really a bug and was just how
configfs was meant to work. It seems it was not meant to be used
where the kernel initiates creation of dirs/files as a result of
some internal action. It's more geared to the user initiating
the creation, and my patch just lead to other bugs and was
reverted:

commit f19e4ed1e1edbfa3c9ccb9fed17759b7d6db24c6
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 29 23:13:30 2019 -0400

    configfs_register_group() shouldn't be (and isn't) called in
rmdirable parts

So to export the session info we have debugfs, sysfs, ioctl,
netlink, etc. sysfs just seemed like a decent fit since one of the
primary users is rtslib and it already has lots of file/dir
handling code.

V3:
- drop format field
- delay tpg deletion to allow fabric modules time to remove their
  sessions.
- Added root sessions dir for easier lookup if userspace has the
  session id.
- add session symlink
- use simple ida.
- Fix goto use. Actually moved sysfs addition call to after nego
  to avoid sysfs additions when login ends up failing.
- Dropped target_setup_session callback fixups and dropped the
  init/free session callback for now. It's not immediately needed
  for this base session sysfs info support.

V2:
- rename top level dir to scsi_target
- Fix extra newline
- Copy data that's exported to sysfs so we do not have to worry about
configfs and sysfs refcounts.
- Export session info needed for tracking sessions in userspace and
handling commands like PGRs there (still needs a way to notify userspace
when sessions are added/deleted, but that will be a different set since
the focus is different).

WARNING: multiple messages have this Message-ID (diff)
From: Mike Christie <mchristi@redhat.com>
To: bvanassche@acm.org, bstroesser@ts.fujitsu.com,
	martin.petersen@oracle.com, linux-scsi@vger.kernel.org,
	target-devel@vger.kernel.org
Subject: [PATCH 00/11] target: add sysfs support
Date: Tue, 28 Apr 2020 01:10:58 -0500	[thread overview]
Message-ID: <20200428061109.3042-1-mchristi@redhat.com> (raw)

The following patches made over Linus's current tree allow lio to
export info about structs that the kernel initiates creation of
via events like initiator login where there is no user interaction
like a mkdir. These patches specificially focus on the
I_T_nexus/session but could be used for other objects if we want.

Why sysfs when we have configfs?

I started with configfs and hit bugs like:

commit cc57c07343bd071cdf1915a91a24ab7d40c9b590
Author: Mike Christie <mchristi@redhat.com>
Date:   Sun Jul 15 18:16:17 2018 -0500

    configfs: fix registered group removal

but it turns out that bug was not really a bug and was just how
configfs was meant to work. It seems it was not meant to be used
where the kernel initiates creation of dirs/files as a result of
some internal action. It's more geared to the user initiating
the creation, and my patch just lead to other bugs and was
reverted:

commit f19e4ed1e1edbfa3c9ccb9fed17759b7d6db24c6
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 29 23:13:30 2019 -0400

    configfs_register_group() shouldn't be (and isn't) called in
rmdirable parts

So to export the session info we have debugfs, sysfs, ioctl,
netlink, etc. sysfs just seemed like a decent fit since one of the
primary users is rtslib and it already has lots of file/dir
handling code.

V3:
- drop format field
- delay tpg deletion to allow fabric modules time to remove their
  sessions.
- Added root sessions dir for easier lookup if userspace has the
  session id.
- add session symlink
- use simple ida.
- Fix goto use. Actually moved sysfs addition call to after nego
  to avoid sysfs additions when login ends up failing.
- Dropped target_setup_session callback fixups and dropped the
  init/free session callback for now. It's not immediately needed
  for this base session sysfs info support.

V2:
- rename top level dir to scsi_target
- Fix extra newline
- Copy data that's exported to sysfs so we do not have to worry about
configfs and sysfs refcounts.
- Export session info needed for tracking sessions in userspace and
handling commands like PGRs there (still needs a way to notify userspace
when sessions are added/deleted, but that will be a different set since
the focus is different).



             reply	other threads:[~2020-04-28  6:10 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-28  6:10 Mike Christie [this message]
2020-04-28  6:10 ` [PATCH 00/11] target: add sysfs support Mike Christie
2020-04-28  6:10 ` [PATCH 01/11] target: check enforce_pr_isids during registration Mike Christie
2020-04-28  6:10   ` Mike Christie
2020-04-28  6:11 ` [PATCH 02/11] target: separate acl name from port ids Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28 16:14   ` Bart Van Assche
2020-04-28 16:14     ` Bart Van Assche
2020-04-28  6:11 ` [PATCH 03/11] iscsi target: setup transport_id Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28  6:11 ` [PATCH 04/11] target: use tpid in target_stat_iport_port_ident_show Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28  6:11 ` [PATCH 05/11] target: drop sess_get_initiator_sid from PR code Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28  6:11 ` [PATCH 06/11] target: drop sess_get_initiator_sid Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28 16:25   ` Bart Van Assche
2020-04-28 16:25     ` Bart Van Assche
2020-04-28  6:11 ` [PATCH 07/11] target: add sysfs support Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28 16:29   ` Bart Van Assche
2020-04-28 16:29     ` Bart Van Assche
2020-04-28 16:33     ` Mike Christie
2020-04-28 16:33       ` Mike Christie
2020-04-28  6:11 ` [PATCH 08/11] target: add sysfs session helper functions Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28 16:43   ` Bart Van Assche
2020-04-28 16:43     ` Bart Van Assche
2020-04-28 17:06     ` Mike Christie
2020-04-28 17:06       ` Mike Christie
2020-04-28  6:11 ` [PATCH 09/11] target: add target_setup_session sysfs support Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28  6:11 ` [PATCH 10/11] iscsi target: use session sysfs helpers Mike Christie
2020-04-28  6:11   ` Mike Christie
2020-04-28  6:11 ` [PATCH 11/11] target: drop sess_get_index Mike Christie
2020-04-28  6:11   ` Mike Christie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200428061109.3042-1-mchristi@redhat.com \
    --to=mchristi@redhat.com \
    --cc=bstroesser@ts.fujitsu.com \
    --cc=bvanassche@acm.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=target-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.