Need to mount two Volumes on a single application pod

So I have an application pod who /app/data directory is mounted on efs /data directory. Currently I want to mount another path /public/shared path on the same efs /data2 directory.
So basically, I want to mount two different paths of my pod to two different paths of my EFS.
But when I deploy the pod, the second volume is not mounted and throws error.

FailedMount     7m42s                  kubelet            Unable to attach or mount volumes: unmounted volumes: [data, data2] unattached volumes= [data, data2]: timed out waiting for the condition

This is my mountPath:

volumeMounts:
    - name: data
      mountPath: /app/data
    - name: data2
      mountPath: /public/shared

This is my volumes:

volumes:
  - name: data
    persistentVolumeClaim:
      claimName: efs-claim-1
  - name: data2
    persistentVolumeClaim:
      claimName: efs-claim-2

The PVCs are bound correctly with the PV. The thing to be noted is that the error arises when trying to mount the second volume. It works perfectly fine with only one volume.

@Chirag_Sharma - I figured out why it was not working for you. The cause is because both PVs are using the same filesystem ID as the volumeHandle. It makes perfect sense for a RWX volume to reuse the same volumeHandle value, since the volume is expected to be shared by multiple containers.

However, in kubernetes volume manager’s desired_state_of_world cache, it figures out whether a volume needs to be mounted by a unique volume name here. And the csi_plugin 's GetVolumeName method determines volume name only by CSI driver name and volumeHandle. This causes the second EFS CSI volume never to be mounted (since kubelet will not call CSI driver again).

The fix will be modifying subpath feature to be specifying the subpath through volumeHandle as such:

csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-xxxxxxxx:/<path of the efs folder>