rpmem basic example doesn't work

107 views
Skip to first unread message

Robert Gong

unread,
Jun 10, 2019, 5:33:57 AM6/10/19
to pmem
Hi all,
    Can someone give some clue for this issue? I plan to use PMoF, so first thing I did try the librpmem example code -- basic.

my environment:

the pmdk version : 1.6
the libfabric version : 
fi_info: 1.7.2a
libfabric: 1.7.2a
libfabric api: 1.7

the client and target  server installed with the NIC: Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx]
and both server installed the SuSE OS : cat /etc/os-release
NAME="SLES"
VERSION="12-SP4"
VERSION_ID="12.4"
PRETTY_NAME="SUSE Linux Enterprise Server 12 SP4"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:12:sp4"

pool set file in the target server:

cat /home/admin/poolsets/pool.set
PMEMPOOLSET
64M /mnt/nvdimm/file1.dat



1. run the basic program in the client :

./basic create ro...@192.168.219.7 pool.set


2. the client log:
<librpmem>: <1> [out.c:234 out_init] pid 128578: program: /tmp/nvdimm_build/pmdk-1.6/src/examples/librpmem/basic
<librpmem>: <1> [out.c:236 out_init] librpmem version 1.2
<librpmem>: <1> [out.c:240 out_init] src version: 1.6
<librpmem>: <1> [out.c:248 out_init] compiled with support for Valgrind pmemcheck
<librpmem>: <1> [out.c:253 out_init] compiled with support for Valgrind helgrind
<librpmem>: <1> [out.c:258 out_init] compiled with support for Valgrind memcheck
<librpmem>: <1> [out.c:263 out_init] compiled with support for Valgrind drd
<librpmem>: <3> [librpmem.c:61 librpmem_init]
<librpmem>: <3> [librpmem.c:67 librpmem_init] Libfabric is fork safe
<librpmem>: <3> [rpmem.c:454 rpmem_create] target ro...@192.168.219.7, pool_set_name pool.set, pool_addr 0x7f37d446d000, pool_size 33554432, nlanes 0x7ffcae4ee6f4, create_attr 0x7ffcae4ee680
<librpmem>: <3> [rpmem.c:361 rpmem_log_args] req create, target ro...@192.168.219.7, pool_set_name pool.set, pool_addr 0x7f37d446d000, pool_size 33554432, nlanes 64
<librpmem>: <3> [rpmem.c:363 rpmem_log_args] create request:
<librpmem>: <3> [rpmem.c:364 rpmem_log_args]    target: ro...@192.168.219.7
<librpmem>: <3> [rpmem.c:365 rpmem_log_args]    pool set: pool.set
<librpmem>: <4> [rpmem.c:366 rpmem_log_args]    pool addr: 0x7f37d446d000
<librpmem>: <4> [rpmem.c:367 rpmem_log_args]    pool size: 33554432
<librpmem>: <3> [rpmem.c:368 rpmem_log_args]    nlanes: 64
<librpmem>: <3> [rpmem.c:394 rpmem_check_args] pool_addr 0x7f37d446d000, pool_size 33554432, nlanes 0x7ffcae4ee6f4
<librpmem>: <3> [rpmem.c:196 rpmem_common_init] target ro...@192.168.219.7
<librpmem>: <3> [rpmem.c:128 rpmem_get_provider] node 192.168.219.7
<librpmem>: <3> [rpmem.c:99 env_get_bool] name RPMEM_ENABLE_VERBS, valp 0x7ffcae4ee4d8
<librpmem>: <3> [rpmem.c:219 rpmem_common_init] provider: verbs
<librpmem>: <4> [rpmem.c:233 rpmem_common_init] establishing out-of-band connection
<librpmem>: <4> [rpmem_cmd.c:147 rpmem_cmd_log] executing command 'ssh -T -oBatchMode=yes ro...@192.168.219.7 rpmemd'
<librpmem>: <4> [rpmem_ssh.c:320 rpmem_ssh_open] received status: 0
<librpmem>: <3> [rpmem.c:241 rpmem_common_init] out-of-band connection established
<librpmem>: <4> [rpmem_obc.c:497 rpmem_obc_create] sending create request message
<librpmem>: <3> [rpmem_obc.c:505 rpmem_obc_create] create request message sent
<librpmem>: <4> [rpmem_obc.c:506 rpmem_obc_create] receiving create request response
<librpmem>: <3> [rpmem_obc.c:515 rpmem_obc_create] create request response received
<librpmem>: <1> [rpmem_obc.c:253 rpmem_obc_check_hdr_resp] Fatal error
<librpmem>: <1> [rpmem.c:480 rpmem_create] create request failed: Remote I/O error
<librpmem>: <3> [rpmem.c:261 rpmem_common_fini] rpp 0xa9faa0, join 0
<librpmem>: <3> [librpmem.c:79 librpmem_fini]

3. target server log:

rpmemd version 1.6
ssh connection: 192.168.219.8 58974 192.168.219.7 22
user: root
configuration
    pool set directory: '/home/admin/poolsets/'
    persist method: Appliance Persistency Method
    number of threads: 0
create request:
    pool descriptor: 'pool.set'
    pool size: 33554432
    nlanes: 64
    provider: verbs
    buff_size: 8192
pool attributes:
    signature: 'EXAMPLE'
    major: 1
    compat_features: 0x0
    incompat_features: 0x0
    ro_compat_features: 0x0
    poolset_uuid: 01010101-0101-0101-0101-010101010101
    uuid: 02020202-0202-0202-0202-020202020202
    next_uuid: 03030303-0303-0303-0303-030303030303
    prev_uuid: 04040404-0404-0404-0404-040404040404
persistency policy:
    persist method: Appliance Persistency Method
    persist flush: none
libfabric version: 1.7.2a
libfabric interface info:
fi_info:
    caps: [ FI_MSG, FI_RMA, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE, FI_LOCAL_COMM, FI_REMOTE_COMM ]
    mode: [ FI_RX_CQ_DATA, FI_LOCAL_MR ]
    addr_format: FI_SOCKADDR_IN
    src_addrlen: 16
    dest_addrlen: 0
    src_addr: fi_sockaddr_in://192.168.219.7:0
    dest_addr: (null)
    handle: (nil)
    fi_tx_attr:
        caps: [ FI_MSG, FI_RMA, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE, FI_LOCAL_COMM, FI_REMOTE_COMM ]
        mode: [  ]
        op_flags: [  ]
        msg_order: [ FI_ORDER_RAR, FI_ORDER_RAW, FI_ORDER_RAS, FI_ORDER_WAW, FI_ORDER_WAS, FI_ORDER_SAW, FI_ORDER_SAS ]
        comp_order: [ FI_ORDER_STRICT ]
        inject_size: 256
        size: 384
        iov_limit: 4
        rma_iov_limit: 1
    fi_rx_attr:
        caps: [ FI_MSG, FI_RMA, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE, FI_LOCAL_COMM, FI_REMOTE_COMM ]
        mode: [ FI_RX_CQ_DATA ]
        op_flags: [  ]
        msg_order: [ FI_ORDER_RAR, FI_ORDER_RAW, FI_ORDER_RAS, FI_ORDER_WAW, FI_ORDER_WAS, FI_ORDER_SAW, FI_ORDER_SAS ]
        comp_order: [ FI_ORDER_STRICT, FI_ORDER_DATA ]
        total_buffered_recv: 0
        size: 384
        iov_limit: 4
    fi_ep_attr:
        type: FI_EP_MSG
        protocol: FI_PROTO_RDMA_CM_IB_RC
        protocol_version: 1
        max_msg_size: 1073741824
        msg_prefix_size: 0
        max_order_raw_size: 1073741824
        max_order_war_size: 0
        max_order_waw_size: 1073741824
        mem_tag_format: 0x0000000000000000
        tx_ctx_cnt: 1
        rx_ctx_cnt: 1
        auth_key_size: 0
    fi_domain_attr:
        domain: 0x0
        name: mlx5_bond_0
        threading: FI_THREAD_SAFE
        control_progress: FI_PROGRESS_AUTO
        data_progress: FI_PROGRESS_AUTO
        resource_mgmt: FI_RM_ENABLED
        av_type: FI_AV_UNSPEC
        mr_mode: [ FI_MR_BASIC ]
        mr_key_size: 4
        cq_data_size: 4
        cq_cnt: 16777216
        ep_cnt: 262144
        tx_ctx_cnt: 1024
        rx_ctx_cnt: 1024
        max_ep_tx_ctx: 1024
        max_ep_rx_ctx: 1024
        max_ep_stx_ctx: 0
        max_ep_srx_ctx: 8388608
        cntr_cnt: 0
        mr_iov_limit: 1
    caps: [ FI_LOCAL_COMM, FI_REMOTE_COMM ]
    mode: [  ]
        auth_key_size: 0
        max_err_data: 255
        mr_cnt: 16777216
    fi_fabric_attr:
        name: IB-0xfe80000000000000
        prov_name: verbs
        prov_version: 1.0
        api_version: 1.4
    nic_fid: (nil)

registering memory: Unknown error -95

4. the failure code  :
It seems there is issue when registering memory region:
/*
 * rpmemd_fip_init_memory -- initialize memory pool's resources
 */
static int
rpmemd_fip_init_memory(struct rpmemd_fip *fip)
{
int ret;

/*
* Register memory region with appropriate access bits:
* - FI_REMOTE_READ  - remote peer can issue READ operation,
* - FI_REMOTE_WRITE - remote peer can issue WRITE operation,
*/
ret = fi_mr_reg(fip->domain, fip->addr, fip->size,
FI_REMOTE_READ | FI_REMOTE_WRITE, 0, 0, 0,
&fip->mr, NULL);
if (ret) {
RPMEMD_FI_ERR(ret, "registering memory");
return -1;
}

return 0;
}



Andy Rudoff

unread,
Jun 10, 2019, 10:42:19 AM6/10/19
to pmem
Hi Robert,

The long-lived memory registrations required for RDMA are currently not supported on Linux file system DAX (hence the EOPNOTSUPP error you're getting back).  There are proposed changes to Linux to fix this, currently under review by the Linux community, but it may be a while before those are accepted and propagate into your favorite Linux distro.

In the meantime, the workaround is to use device DAX instead of file system DAX.  Start by using ndctl to change the namespace type to devdax.  Then, in your poolset file, use the AUTO keyword that tells the library to determine the size automatically, like this:

     PMEMPOOLSET
     AUTO /dev/daxX.Y

where /dev/daxX.Y is the name of the device DAX device you created.  Note that if you aren't running as root, you'll need to set the permissions on /dev/daxX.Y to allow you to read/write to it.

We're also in the process of writing up all the steps for using rpmem in more detail.  Hopefully we'll post that document pretty soon.

-andy

Wayne Gao

unread,
Jun 10, 2019, 9:37:58 PM6/10/19
to pmem
buddy, I am colleague of Robert.
do we have any work around that for us the play the librpmem? we are only to get some performance data.
is SPDK can work around this kernel file system dax issue?

Andy Rudoff

unread,
Jun 10, 2019, 9:45:43 PM6/10/19
to pmem
Hi Wayne,

The workaround is in the reply you quoted below.  Device DAX will work with librpmem and you can get whatever performance data you want that way.

-andy

Robert Gong

unread,
Jun 12, 2019, 4:50:02 AM6/12/19
to pmem
Hi Andy,
    I did try your workaround:

In the target server:

1) ndctl info after creating the namespace with the commmand:  ndctl create-namespace --type=pmem --mode=devdax


admin@lehi-dirt:~> ndctl list -BiRN
{
  "provider":"ACPI.NFIT",
  "dev":"ndbus0",
  "scrub_state":"idle",
  "regions":[
    {
      "dev":"region0",
      "size":17179869184,
      "available_size":0,
      "type":"pmem",
      "numa_node":0,
      "iset_id":7622173260169589529,
      "persistence_domain":"unknown",
      "namespaces":[
        {
          "dev":"namespace0.0",
          "mode":"devdax",
          "map":"dev",
          "size":16909336576,
          "uuid":"8166f8ee-6056-49d8-bbd5-ef02813f9098",
          "raw_uuid":"1cc0d826-762a-4369-8c7b-0bc2bbfa71d5",
          "chardev":"dax0.0",
          "numa_node":0
        },
        {
          "dev":"namespace0.1",
          "mode":"raw",
          "size":0,
          "uuid":"00000000-0000-0000-0000-000000000000",
          "sector_size":512,
          "state":"disabled",
          "numa_node":0
        }
      ]
    }
  ]
}

poolset file:
lehi-dirt:~ # cat /home/admin/poolsets/pool.set
PMEMPOOLSET
AUTO /dev/dax0.0


After running the basic program in the client side:
./basic create ro...@192.168.219.7 pool.set

the client side log:

<librpmem>: <1> [out.c:234 out_init] pid 121595: program: /tmp/nvdimm_build/pmdk-1.6/src/examples/librpmem/basic
<librpmem>: <1> [out.c:236 out_init] librpmem version 1.2
<librpmem>: <1> [out.c:240 out_init] src version: 1.6
<librpmem>: <1> [out.c:248 out_init] compiled with support for Valgrind pmemcheck
<librpmem>: <1> [out.c:253 out_init] compiled with support for Valgrind helgrind
<librpmem>: <1> [out.c:258 out_init] compiled with support for Valgrind memcheck
<librpmem>: <1> [out.c:263 out_init] compiled with support for Valgrind drd
<librpmem>: <3> [librpmem.c:61 librpmem_init]
<librpmem>: <3> [librpmem.c:67 librpmem_init] Libfabric is fork safe
<librpmem>: <3> [rpmem.c:454 rpmem_create] target ro...@192.168.219.7, pool_set_name pool.set, pool_addr 0x7f60dccd0000, pool_size 33554432, nlanes 0x7fffc7935fc4, create_attr 0x7fffc7935f50
<librpmem>: <3> [rpmem.c:361 rpmem_log_args] req create, target ro...@192.168.219.7, pool_set_name pool.set, pool_addr 0x7f60dccd0000, pool_size 33554432, nlanes 64
<librpmem>: <3> [rpmem.c:363 rpmem_log_args] create request:
<librpmem>: <3> [rpmem.c:364 rpmem_log_args]    target: ro...@192.168.219.7
<librpmem>: <3> [rpmem.c:365 rpmem_log_args]    pool set: pool.set
<librpmem>: <4> [rpmem.c:366 rpmem_log_args]    pool addr: 0x7f60dccd0000
<librpmem>: <4> [rpmem.c:367 rpmem_log_args]    pool size: 33554432
<librpmem>: <3> [rpmem.c:368 rpmem_log_args]    nlanes: 64
<librpmem>: <3> [rpmem.c:394 rpmem_check_args] pool_addr 0x7f60dccd0000, pool_size 33554432, nlanes 0x7fffc7935fc4
<librpmem>: <3> [rpmem.c:196 rpmem_common_init] target ro...@192.168.219.7
<librpmem>: <3> [rpmem.c:128 rpmem_get_provider] node 192.168.219.7
<librpmem>: <3> [rpmem.c:99 env_get_bool] name RPMEM_ENABLE_VERBS, valp 0x7fffc7935da8
<librpmem>: <3> [rpmem.c:219 rpmem_common_init] provider: verbs
<librpmem>: <4> [rpmem.c:233 rpmem_common_init] establishing out-of-band connection
<librpmem>: <4> [rpmem_cmd.c:147 rpmem_cmd_log] executing command 'ssh -T -oBatchMode=yes ro...@192.168.219.7 rpmemd'
<librpmem>: <4> [rpmem_ssh.c:320 rpmem_ssh_open] received status: 0
<librpmem>: <3> [rpmem.c:241 rpmem_common_init] out-of-band connection established
<librpmem>: <4> [rpmem_obc.c:497 rpmem_obc_create] sending create request message
<librpmem>: <3> [rpmem_obc.c:505 rpmem_obc_create] create request message sent
<librpmem>: <4> [rpmem_obc.c:506 rpmem_obc_create] receiving create request response
<librpmem>: <3> [rpmem_obc.c:515 rpmem_obc_create] create request response received
<librpmem>: <1> [rpmem_obc.c:253 rpmem_obc_check_hdr_resp] Invalid provider
<librpmem>: <1> [rpmem.c:480 rpmem_create] create request failed: Invalid argument
<librpmem>: <3> [rpmem.c:261 rpmem_common_fini] rpp 0xf12aa0, join 0
<librpmem>: <3> [librpmem.c:79 librpmem_fini]



The target server side log:
rpmemd version 1.6
ssh connection: 192.168.219.8 60398 192.168.219.7 22
user: root
configuration
    pool set directory: '/home/admin/poolsets/'
    persist method: Appliance Persistency Method
    number of threads: 0
create request:
    pool descriptor: 'pool.set'
    pool size: 33554432
    nlanes: 64
    provider: verbs
    buff_size: 8192
pool attributes:
    signature: 'EXAMPLE'
    major: 1
    compat_features: 0x0
    incompat_features: 0x0
    ro_compat_features: 0x0
    poolset_uuid: 01010101-0101-0101-0101-010101010101
    uuid: 02020202-0202-0202-0202-020202020202
    next_uuid: 03030303-0303-0303-0303-030303030303
    prev_uuid: 04040404-0404-0404-0404-040404040404
persistency policy:
    persist method: Appliance Persistency Method
    persist flush: none
getting fabric interface information: Unknown error -61


which shows the fi_getinfo  is not working now after I changed the mode of namespace, can you know why? 

rpmemd_fip_getinfo(struct rpmemd_fip *fip, const char *service,
const char *node, enum rpmem_provider provider)
{
int ret;

struct fi_info *hints = rpmem_fip_get_hints(provider);
if (!hints) {
RPMEMD_LOG(ERR, "getting fabric interface hints");
ret = -1;
goto err_fi_get_hints;
}

ret = fi_getinfo(RPMEM_FIVERSION, node, service, FI_SOURCE,
hints, &fip->fi);
if (ret) {
RPMEMD_FI_ERR(ret, "getting fabric interface information");
goto err_fi_getinfo;
}

.................
}





在 2019年6月11日星期二 UTC+8上午9:45:43,Andy Rudoff写道:

Janek Mi

unread,
Jun 13, 2019, 3:22:24 AM6/13/19
to pmem

Hi Robert

Changing the mode of the namespace should not affect your network configuration.
I suggest verifying the RDMA configuration using the rping command.

1. on the server side:
[root@server ~] rping -s

2. on the client side:
rping -c -a 192.168.219.7 -v

Note: In your example, you are using the root user on the server side. I suggest using the same user for the rping test.

Robert Gong

unread,
Jun 13, 2019, 3:39:43 AM6/13/19
to pmem
it works now, the reason why this issue happens  is the PMDK hard coded the libfabric version.

Andy, 
     Do you know how to find the patch for solving the long-lived memory registrations required for RDMA  not supported on Linux file system DAX?
we may push our vendor to pick it ASAP once it is done or may patch it by ourselves for early testing.

在 2019年6月12日星期三 UTC+8下午4:50:02,Robert Gong写道:

Wayne Gao

unread,
Jun 13, 2019, 3:41:24 AM6/13/19
to pmem
Hello Andy

can you share us the which kernel patch fix this issue? we can create ticket to SUSE to active keep monitor it and merge it.


On Monday, June 10, 2019 at 10:42:19 PM UTC+8, Andy Rudoff wrote:

Wayne Gao

unread,
Jun 13, 2019, 3:42:58 AM6/13/19
to pmem
Hello buddy

can you share us which kernel patch will fix this issue? we can ask SUSE help on this.

Janek Mi

unread,
Jun 13, 2019, 3:46:18 AM6/13/19
to pmem
It is WIP:  https://lkml.org/lkml/2019/6/5/1046

Alternatively, since you are using Mellanox RNIC's you can make use of On Demand Paging:
If you are interested I can provide more details on how to enable ODP for use with librpmem.

Robert Gong

unread,
Jun 13, 2019, 3:48:18 AM6/13/19
to pmem
Janek ,
     Thank you for your reply, we have figured out this is relative with PMDK hardcoded the version of libfabric, and libfabric will check the version set by PMDK, once they are unmatched, the failure will happen.

    BTW, do you know the patch for fixing the long-lived memory registrations required for RDMA  not supported on Linux file system DAX? I may want to push our vendor to pick it up ASAP or patch it by ourselves.


在 2019年6月13日星期四 UTC+8下午3:22:24,Janek Mi写道:

Janek Mi

unread,
Jun 13, 2019, 4:04:00 AM6/13/19
to pmem
1. The patch for the long-lived memory registration is currently WIP. You can find it here: https://lkml.org/lkml/2019/6/5/1046

2. An alternative for Filesystem DAX support is called On Demand Paging. It is an ibverbs extension provided by the Mellanox.
It has some limitations (e.g. it is supported only by the Mellanox RNICs and it does support memory regions of the size up to 128 MB (IBV_EXP_ACCESS_RELAXED))
But it is available right now. If you want to use it please let me know so I can provide you with more details.

3. I believe PMDK has not hardcoded version of libfabric. If so please send me the specifics so I can fix this.

Robert Gong

unread,
Jun 13, 2019, 4:24:07 AM6/13/19
to pmem
1. got it.
2. I want to try On Demand Paging technique, please provide me more details.
3. you can find it in all of the function call fi_getinfo(...),  the first parameter of fi_getinfo will use the macro-- RPMEM_FIVERSION, which is hardcoded with 1.4 by PMDK, now libfabric will check it, if it is not matched, it will return failed.

在 2019年6月13日星期四 UTC+8下午4:04:00,Janek Mi写道:

Janek Mi

unread,
Jun 13, 2019, 5:47:28 AM6/13/19
to pmem
3. Lifabric will fail only if it is older than the required version (1.4 in this case). It does not have to match exactly.
So librpmem has hardcoded minimal required libfabric version.

---
if (FI_VERSION_LT(fi_version(), version)) {
FI_WARN(&core_prov, FI_LOG_CORE,
"Requested version is newer than library\n");
return -FI_ENOSYS;
}
---

2. I will send details in the next post.
Message has been deleted

Janek Mi

unread,
Jun 13, 2019, 6:25:33 AM6/13/19
to pmem
AD 2.

On Demand Paging (ODP) is an ibverbs extension provided by Mellanox. Librpmem uses ibverbs through libfabric. Libfabric has ODP support from version 1.6 but it is disabled by default. ODP support can be enabled using FI_VERBS_USE_ODP environment variable.

Using ODP together with librpmem requires:
- Mellanox RNIC’s (I’m not sure if all Mellanox products are supported and what is the minimal version of the MLNX_OFED)
- libfabric 1.6.2
- export FI_VERBS_USE_ODP=1
* has to be set in the environment of the app which is using Filesystem DAX for the RDMA (on the initiator app side and/or rpmemd)
* it has to be present in the environment automatically (add to .bashrc?) it is crucial for rpmemd which is spin up automatically
* for details please see the fi_verbs(7) manual page.


On Thursday, 13 June 2019 10:24:07 UTC+2, Robert Gong wrote:

Wayne Gao

unread,
Jul 2, 2019, 2:29:55 AM7/2/19
to pmem
hello buddy, May I know how it is going for below patch, what is the progress for it to upstream to linux kernel? any detail to share us? what will be the detail steps for us to verify this patch in our SLES12SP4, we can build the kernel by ourselves.

Wayne Gao

unread,
Jul 8, 2019, 3:12:54 AM7/8/19
to pmem
hello Janek, I search your WIP and linux kernel sub branch. I cannot find your code is in any linux kernel sub branch. Could you please let me know this WIP status and plan to upstream? and also, we use SLES12SP4, can you make a patch for us to verify your patch? we will use this feature if it is working. looking forward to hear your feedback.

Janek Mi

unread,
Jul 8, 2019, 9:20:41 AM7/8/19
to Wayne Gao, pmem
Hi Wayne

I do not take part in developing this patch. I can not propagate this code in any way.
Currently, the only info I have is from this message: https://lkml.org/lkml/2019/6/5/1046
I will update this thread as soon as I will have any additional info to share.

Regards
Jan

--
You received this message because you are subscribed to a topic in the Google Groups "pmem" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pmem/ZKhmyZWEyn4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pmem+uns...@googlegroups.com.
To post to this group, send email to pm...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pmem/0787cbea-41c6-4480-a31c-c6625ec555e4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Wayne Gao

unread,
Jul 9, 2019, 8:59:06 AM7/9/19
to pmem
can you drag that developer ira.weiny into the group to help directly? I cannot find his code in kernel any branch. who is verifying his proposal?
To unsubscribe from this group and all its topics, send an email to pm...@googlegroups.com.

Janek Mi

unread,
Jul 10, 2019, 2:51:20 AM7/10/19
to pmem
Hi Wayne

If you want to discuss Ira's proposal you are more than welcome to join the discussion on Linux Kernel Mailing List: https://lkml.org/lkml/2019/6/5/1046
It is the single mailing list gathering all Linux kernel development discussions.

Ira has prepared kernel branch on github with the whole patch set. You can find it here: https://github.com/weiny2/linux-kernel/tree/rdmafsdax-rfc-05-June-2019

Hope it helps.
Jan
Reply all
Reply to author
Forward
0 new messages