• James Smart's avatar
    nvme-fc: revise TRADDR parsing · 9c5358e1
    James Smart authored
    The FC-NVME spec hasn't locked down on the format string for TRADDR.
    Currently the spec is lobbying for "nn-<16hexdigits>:pn-<16hexdigits>"
    where the wwn's are hex values but not prefixed by 0x.
    
    Most implementations so far expect a string format of
    "nn-0x<16hexdigits>:pn-0x<16hexdigits>" to be used. The transport
    uses the match_u64 parser which requires a leading 0x prefix to set
    the base properly. If it's not there, a match will either fail or return
    a base 10 value.
    
    The resolution in T11 is pushing out. Therefore, to fix things now and
    to cover any eventuality and any implementations already in the field,
    this patch adds support for both formats.
    
    The change consists of replacing the token matching routine with a
    routine that validates the fixed string format, and then builds
    a local copy of the hex name with a 0x prefix before calling
    the system parser.
    
    Note: the same parser routine exists in both the initiator and target
    transports. Given this is about the only "shared" item, we chose to
    replicate rather than create an interdendency on some shared code.
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    9c5358e1
fc.c 62.8 KB